Seam SVN: r7997 - trunk.
by seam-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2008-04-21 14:27:16 -0400 (Mon, 21 Apr 2008)
New Revision: 7997
Modified:
trunk/release-process.txt
Log:
major update to the seam release process
Modified: trunk/release-process.txt
===================================================================
--- trunk/release-process.txt 2008-04-21 17:34:45 UTC (rev 7996)
+++ trunk/release-process.txt 2008-04-21 18:27:16 UTC (rev 7997)
@@ -1,44 +1,244 @@
Seam Release Process
====================
-
Updating version numbers
------------------------
-* Update the version number embedded in:
- - readme.txt
- - changelog.txt (insert JIRA release notes)
- - build/default.build.properties (you're probably building locally with
- -SNAPSHOT as the qualifer in build.properties, comment it out when building
- for a release)
+* Update the version information:
+ - readme.txt
+ - one place at top including date.
+ - changelog.txt
+ - Generate a JIRA release note report for the release in "text" format
+ - Only "issue types" that have jira's will work
+ - Usually that is (Bug, Feature Request, Task, and Patch)
+ - Check all the issue types one at a time to determine final list.
+ - build/default.build.properties
+ - Change the version numbers as needed
+ - Set the qualifier using a "." ex. ".CR1" or ".GA"
+ - Check that build.properties has the qualifier commented out for the release
+
+Maven repository settings
+-------------------------
+* A released version of seam should not reference any repositories other than
+ "repository.jboss.org". See "build/readme.txt" for details.
+ - Search "$DIST/build" for "pluginRepository".
+ - Should only find "root.pom.xml" and "docs.pom.xml"
+ - Comment out any other "<pluginRepository>" entry
+ - Comment out any "<repository>" that references a commented out entry.
+ - Verify prior to tagging
+ - run "ant cleanall testall testreport" with these changes
+ - This should build, and test without a problem.
-Tests
------
-* "ant cleanall testall testreport" with validate.xml = true in build.properties, check report/junit-noframes.html
-* Sanity check the following example applications on JBoss 4.2.2
- - booking
- - dvdstore
- - jpa
- - hibernate
- - seamspace
+SVN tagging and checkout
+------------------------
+* Note: testing can begin prior to official tagging but a complete process should be executed on the tag prior to release.
+* Tag the release (XX as needed)
+ -"svn copy https://svn.jboss.org/repos/seam/XX/XX https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX -m "create JBoss_Seam_x_x_x_XXX tag""
+ - ex. "svn copy https://svn.jboss.org/repos/seam/branches/Seam_2_0 https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1"
+* In a clean directory checkout the newly tagged seam source ( XX as needed)
+ - "svn co https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX seam"
+ - ex. "svn co https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1 seam"
+* In the original branch/trunk change:
+ - Qualifier back to "-SNAPSHOT" in default.build.properties file.
+ - The version numbers should stay the same
+ - Any new work is that versions snapshot
+ - Revert the Maven repository changes if needed
+
+Building and Checking Dist
+--------------------------
+* Run "mkdir ../releaselogs" for release artifacts.
+
+* Initial build and test suite execution
+ - run initial build to download dependencies and setup env.
+ - run "ant > ../releaselogs/x.x.x.XX.initbuild.txt"
+ - run "ant -Dvalidate.xml=true cleanall testall testreport > ../releaselogs/x.x.x.XX.testallreport.txt"
+ - check report/junit-noframes.html
+ - There should be no failures or errors.
+ - run "cp -R test-output ../releaselogs"
+ - run "cp -R test-report ../releaselogs"
+
+* Create the distribution build
+ - run "ant cleanall dist > ../releaselogs/x.x.x.XX.distbuild.txt"
+ - Use the dist build for all example tests
+
+* Diff the zip, gz, and exploded version of the dist build
+ - example of how to do it:
+ - explode the zip and gz into "../tmp/zip" and "../tmp/gz"
+ - cp distribution directory into "../tmp/dist"
+ - in "../tmp" run:
+ - "diff -r ./gz/. ./zip/."
+ - "diff -r ./gz/. ./dist/."
+ - There should be no differences.
+ - Delete "../tmp" if you wish
+
+* check that the following files/directories exist in the dist "ls -1"
+ bootstrap
+ build
+ build.properties
+ build.xml
+ changelog.txt
+ doc
+ examples
+ lgpl.txt
+ lib
+ mail
+ readme.txt
+ seam
+ seam-gen
+ seam-text.g
+ seam.bat
+ seam2migration.txt
+ src
+ ui
+
+* check that the following source directories exist in the dist "ls -1 src"
+ debug
+ gen
+ ioc
+ jbas5
+ mail
+ main
+ pdf
+ remoting
+ test
+
+* check that the following examples exist in the dist "ls -1 examples"
+ blog
+ booking
+ build.xml
+ contactlist
+ drools
+ dvdstore
+ groovybooking
+ hibernate
+ icefaces
+ itext
+ jee5
+ jpa
+ mail
+ messages
+ nestedbooking
+ numberguess
+ quartz
+ readme.txt
+ registration
+ remoting
+ seambay
+ seamdiscs
+ seampay
+ seamspace
+ spring
+ todo
+ ui
+ wiki
+
+* Archive reports
+ - run these in the dist directory
+ find . -name *.jar > ../releaselogs/jarlist.txt
+ find . -name *.sar > ../releaselogs/sarlist.txt
+ find . -name *.war > ../releaselogs/warlist.txt
+ find . -name *.ear > ../releaselogs/earlist.txt
+ find . -name *.zip > ../releaselogs/ziplist.txt
+ find . -name *.gz > ../releaselogs/gzlist.txt
+ find . -name *seam*.jar > ../releaselogs/seamjarlist.txt
+ - Manually review the lists for problems
+ - seam jars all in one place
+ - <TODO: list expected items or provide listing in svn>
+
+* In the dist run "ant dependencyReport"
+ - run "cp ./dependency-report.txt ../releaselogs"
+ - Review for snapshot dependencies
+ - there should be none.
+ - Compare with real jar versions from META-INF/MANIFEST.MF
+ - <TODO: A tool is needed to do this effectivly.>
+
+* Built source verification
+ - Create a copy of the $DIST directory
+ - In the original run "ant"
+ - diff the original and the built versions
+ - only difference should be build related
+ - <TODO: list expected differences>
+ - Extract seam jars from orig, and the newly built into different dirs
+ - diff the directories
+ - Should be no differences except version of ant and/or jdk versions
+
+Example verification
+--------------------
+* The list of examples below is extensive, and testing may not touch each.
+ - This should be based on risk analysis, and release note review.
+ - For a major/minor GA build they should all be tested.
+ - Any examples that are not tested should be noted.
+* Verify the the following are accurate and up to date:
+ - "$DIST/readme.txt"
+ - "$DIST/examples/readme.txt"
+* For these examples verify the following:
+ - readme.txt is accurate
+ - ant deploy
+ - ant tomcat.deploy - for supported examples
+ - ant test
+ - ant clean
+ - ant undeploy
+* Examples with "(tutorial)" are discussed in the reference guide tutorial.
+ - document should be validated as well
+ - including tomcat deployments
+* Edit the $dist/build.properties and set the jboss.home and tomcat.home
+ - JBoss AS 4.2.2.GA and Tomcat 6.X
+* JBoss 4.2.2 examples
+ - blog (tutorial)
+ - booking (tutorial)
- contactlist
+ - drools
+ - dvdstore (tutorial)
+ - groovybooking
+ - hibernate (tutorial)
+ - icefaces
- itext
+ - jpa
- mail
+ - messages (tutorial)
+ - nestedbooking
+ - numberguess (tutorial)
+ - quartz
+ - registration (tutorial)
+ - remoting/chatroom
+ - remoting/gwt
+ - remoting/helloworld
+ - remoting/poker
+ - remoting/progressbar
+ - seambay
+ - seamdiscs
+ - seampay
+ - seamspace
- spring
- - seamdiscs
-* Sanity check the following example applications on Tomcat
- - booking
- - dvdstore
- - jpa
- - hibernate
-* Sanity check the folowing example applications on GlassFish
+ - takeaway
+ - todo (tutorial)
+ - ui
+ wiket
+ - wiki
+* Tomcat 6 examples
+ - Note: use JBoss embedded unless specified differently
+ - blog (tutorial)
+ - booking (tutorial)
+ - dvdstore (tutorial)
+ - hibernate (tutorial)
+ - hibernate (tutorial) without embedded
+ - jpa
+ - jpa without embedded
+ - messages (tutorial)
+ - numberguess (tutorial)
+ - registration (tutorial)
+ - seambay
+ - seampay
+ - todo (tutorial)
+* GlassFish v2.1 examples
- jee5
- jpa
- hibernate
-Test seam-gen & JBDS
--------------
+JBDS and seam-gen verification
+------------------------------
+These tests use a stable version of MySQL and the latest release of JBDS.
+
* export the following tables to MySQL:
-
CREATE TABLE `Person` (
`username` varchar(10) NOT NULL,
`name` varchar(100) NOT NULL,
@@ -59,106 +259,147 @@
CONSTRAINT `owner` FOREIGN KEY (`ownerUsername`) REFERENCES `person` (`username`)
) ENGINE=InnoDB
-* run "seam setup create-project generate-entities explode"
- - test the app, at least the list and edit pages for Person
-* run "seam new-action new-form restart"
- - test both generated pages
- - run the unit tests in eclipse using the TestNG plugin
-* Create a new war project in JBDS
+* seam-gen review seam-gen chapter of the reference guide
+ - accurate and up to date
+* seam-gen EAR
+ - run "seam setup create-project generate-entities explode"
+ - during setup choose an EAR project
+ - test the basic functionality of the app (CRUD on each table)
+ - run "seam new-action new-form restart"
+ - test both generated pages
+ - run the unit tests in eclipse using the TestNG plugin
+* seam-gen IceFaces EAR test
+ - run "seam setup create-project generate-entities explode"
+ - during setup choose an EAR project
+ - during setup choose to use IceFaces instead of RichFaces
+ - test the basic functionality of the app (CRUD on each table)
+* seam-gen WAR
+ - run "seam setup create-project generate-entities explode"
+ - during setup choose a WAR project
+ - test the basic functionality of the app (CRUD on each table)
+ - run "seam new-action new-form restart"
+ - test both generated pages
+ - run the unit tests in eclipse using the TestNG plugin
+* JBDS - import the EAR seam-gen generated project into JBDS.
+ - Enable Seam support in project properties
+ - Check that EL code completion works for Seam components
+ - Check that Hibernate Console work on the project
+ - expand the Configuration node
+ - Open HQL editor and query "from SomeEntity" and execute the query
+* JBDS new WAR project
- Reverse engineer entities from MySQL
- - Test generated pages (check hot deployment of Seam components, html)
+ - Create "new Seam Action" and "new Seam Form"
+ - Test generated pages (check hot deployment of Seam components, html)
- Test running unit tests from Eclipse
-* Create a new ear project in JBDS
+* JBDS new EAR project
- Reverse engineer entities from MySQL
- - Test generated pages (check hot deployment of Seam components, html)
- - Test running unit tests from Eclipse
+ - Create "new Seam Action" and "new Seam Form"
+ - Test generated pages (check hot deployment of Seam components, html)
+ - Test running unit tests from JBDS
+* JBDS - test a subset of the examples with testNG plugin.
+ - See "/readme.txt" and "/examples/readme.txt" for details.
+
+Portal Bridge Verification
+--------------------------
+* Use the latest released version of the PortalBridge and JBoss Portal.
+ - http://labs.jboss.com/portletbridge
+ - http://www.jboss.org/jbossportal/
+* Deploy and verify the bridge booking example to JBoss portal.
+* Deploy a second version of the booking example as a separate portlet
+ - <TODO: there may be a new chatroom seam portlet for this testing>
+* Build the seam identity extension with the booking example
+ - <TODO add reference link to the instructions>
+ - Go to the booking demo seamBookingPortlet/pom.xml
+ - go to the bottom and uncomment the identity module.
+ - Build the booking demo and login via the portal admin link.
+ - this should automatically logs you into the seam booking demo
+
+Document review
+---------------
+* Review the API javadocs in both IE and FF.
+ - Specifically for version differences
+ - This is not a full review
+* Review the Reference Guide documentation in both IE and FF.
+ - Review for format and code styles
+ - Review for version numbers, and dependencies
+ - Review any extensive changes based on release notes and the team.
+ - This is not a full review
-
-
-Tag SVN
--------
-* "svn copy trunk tags/JBoss_Seam_x_x_x_XX"
-* "svn commit tags/JBoss_Seam_x_x_x_XX"
-
-Build + Upload
+Final Build + Upload
--------------
-* run "ant cleanall dist"
-* check that the following files/directories exist in the dist "ls -1"
+* When ready for the release
+ - checkout a clean version of the tag
+ - run "ant cleanall dist > ../releaselogs/x.x.x.XX.finaldistbuild.txt"
+ - diff this to the one used for testing
-bootstrap
-build
-build.properties
-build.xml
-changelog.txt
-doc
-examples
-lgpl.txt
-lib
-mail
-pom.xml
-readme.txt
-seam
-seam-gen
-seam-text.g
-seam.bat
-seam2migration.txt
-src
-ui
+* Follow instructions for sourceforge upload
+ - Create md5 files for the ".zip" and ".tar.gz" files
+ - <QUESTION: do we want to create md5 files for the archives>
+ - upload the .zip and .tar.gz and md5 files to SF FTP "upload.sf.net/incoming" folder
+
+* Login to sourceforge.org and go to jboss.org project
+ - Under admin tab click on "file releases"
+ - Add a release to the "JBoss Seam" project
+ - Set "Status" to "hidden"
+ - Paste this release changelog snippet in the "changelog"
+ - Paste this release readme.txt in the "release notes"
+ - Add the 4 files uploaded to the release
+ - Keep everything hidden for now.
-* check that the following source directories exist in the dist "ls -1 src"
+* Upload the "$DIST/doc" directory to "docs.jboss.com/seam/<NEW VERSION>"
+ - Note: this can take a long time.
+
+* Maven release procedure.(see build/readme.txt for details)
+ - Checkout/update JBoss repository
+ - checkout "svn co https://svn.jboss.org/repos/repository.jboss.org/maven2"
+ - Note this can take a very long time
+ - update (if already local) "svn update ." in the "maven2" directory.
+ - Adding this to an eclipse project with svn plugin can make it much easier.
+ - Set the "offline.repository.jboss.org" property in "build/build.properties"
+ - to the directory you checked out to.
+ - Run "ant releaseSeam" in the build directory
+ - Review and Commit the release changes to repository.jboss.org
-debug
-gen
-ioc
-mail
-main
-pdf
-remoting
-test
+Final Coordination and Announcement
+-----------------------------------
+* For a GA release and if its newest version of Seam
+ - Update "http://docs.jboss.com/seam/latest" with the docs from this version.
+ - Not for cr,alpha,beta releases
+ - This can take a long time
+* Update the DTDs and XSDs on jboss.com/products/seam
+ - Easiest way to use a script that checks for changes
+ - <TODO add script to svn>
+ - Update any changes to the site
+* Login to sourceforge.org and modify the Seam release entry
+ - Change the date to today
+ - Change "Status" to active
+* Update the documentation and download pages on seamframework.org
+ - documentation points to "docs.jboss.com"
+ - downloads point to sourceforge download page
+* Update Jira so that version shows as "released"
+* Announce the release
+ - Blog on in.relation.to
+ - seamframework.org news, and forums
+ - jboss.org news
-* check that the following examples exist in the dist "ls -1 examples"
-
-blog
-booking
-build.xml
-contactlist
-drools
-dvdstore
-groovybooking
-hibernate
-icefaces
-itext
-jee5
-jpa
-mail
-messages
-numberguess
-portal
-quartz
-readme.txt
-registration
-remoting
-seam-examples.html
-seambay
-seamdiscs
-seampay
-seamspace
-spring
-todo
-ui
-wiki
-
-* upload .zip and .tar.gz to upload.sf.net
-* do the sf.net file release stuff
-* Do the release proceedure for maven as described in build/readme.txt
-* upload the doc directory of the dist to docs.jboss.org
- - remember to update the latest/ dir
-* update the documentation and download pages on jboss.org
-* update the DTDs and XSDs on jboss.com/products/seam
-* announce the release on the news page on jboss.org
-
Update Demos
------------
-This step is not needed for every point release:
-* upload the booking and dvdstore examples to demo.jboss.com
+* This step is not needed for every point release:
+* Upload the booking and dvdstore examples to demo.jboss.com
+* <TODO more information on what is needed>
+Notes
+-----
+* To reapply a tag:
+ - First delete the original
+ - svn delete https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX -m "removing old tag prior to applying updated tag"
+ - ex. svn delete https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1 -m "removing old tag prior to applying updated tag"
+ - Recopy back to tag
+ -"svn copy https://svn.jboss.org/repos/seam/XX/XX https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX -m "create JBoss_Seam_x_x_x_XXX tag""
+ - ex. svn copy https://svn.jboss.org/repos/seam/branches/Seam_2_0 https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1 -m "Updated tag for 2.0.2.CR1"
+
+[FUTURE]
+--------
+* Store release related scripts (especially when more automated) in svn.
+* Store release logs, and reports in svn.
+* Find a jar/archive reporting tool for detailed dependency, version, location reports.
16 years, 10 months
Seam SVN: r7996 - branches/Seam_2_0/doc/Seam_Reference_Guide/en-US.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2008-04-21 13:34:45 -0400 (Mon, 21 Apr 2008)
New Revision: 7996
Modified:
branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/Configuration.xml
Log:
add missing / in XML short tag
Modified: branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/Configuration.xml
===================================================================
--- branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/Configuration.xml 2008-04-21 15:19:32 UTC (rev 7995)
+++ branches/Seam_2_0/doc/Seam_Reference_Guide/en-US/Configuration.xml 2008-04-21 17:34:45 UTC (rev 7996)
@@ -740,14 +740,14 @@
<para> Add the Embedded JBoss listener to <literal>conf/server.xml</literal>. It should appear after
all other listeners in the file.</para>
- <programlisting role="XML"><![CDATA[<Listener className="org.jboss.embedded.tomcat.EmbeddedJBossBootstrapListener" />]]></programlisting>
+ <programlisting role="XML"><![CDATA[<Listener className="org.jboss.embedded.tomcat.EmbeddedJBossBootstrapListener"/>]]></programlisting>
</listitem>
<listitem>
<para>WAR file scanning should be enabled by adding a listener to
<literal>conf/context.xml</literal>. </para>
- <programlisting role="XML"><![CDATA[<Listener className="org.jboss.embedded.tomcat.WebinfScanner">]]></programlisting>
+ <programlisting role="XML"><![CDATA[<Listener className="org.jboss.embedded.tomcat.WebinfScanner"/>]]></programlisting>
</listitem>
</itemizedlist>
16 years, 10 months
Seam SVN: r7995 - branches/Seam_2_0.
by seam-commits@lists.jboss.org
Author: jbalunas(a)redhat.com
Date: 2008-04-21 11:19:32 -0400 (Mon, 21 Apr 2008)
New Revision: 7995
Modified:
branches/Seam_2_0/release-process.txt
Log:
Major updates to the release process.
Modified: branches/Seam_2_0/release-process.txt
===================================================================
--- branches/Seam_2_0/release-process.txt 2008-04-21 13:01:51 UTC (rev 7994)
+++ branches/Seam_2_0/release-process.txt 2008-04-21 15:19:32 UTC (rev 7995)
@@ -8,149 +8,236 @@
- one place at top including date.
- changelog.txt
- Generate a JIRA release note report for the release in "text" format
- - Only "issue types" that have jira's will work
+ - Only "issue types" that have jira's will work
- Usually that is (Bug, Feature Request, Task, and Patch)
- Check all the issue types one at a time to determine final list.
- build/default.build.properties
- Change the version numbers as needed
- Set the qualifier using a "." ex. ".CR1" or ".GA"
- Check that build.properties has the qualifier commented out for the release
+
+Maven repository settings
+-------------------------
+* A released version of seam should not reference any repositories other than
+ "repository.jboss.org". See "build/readme.txt" for details.
+ - Search "$DIST/build" for "pluginRepository".
+ - Should only find "root.pom.xml" and "docs.pom.xml"
+ - Comment out any other "<pluginRepository>" entry
+ - Comment out any "<repository>" that references a commented out entry.
+ - Verify prior to tagging
+ - run "ant cleanall testall testreport" with these changes
+ - This should build, and test without a problem.
-SVN Tagging and Checkout
+SVN tagging and checkout
------------------------
* Note: testing can begin prior to official tagging but a complete process should be executed on the tag prior to release.
* Tag the release (XX as needed)
-"svn copy https://svn.jboss.org/repos/seam/XX/XX https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX -m "create JBoss_Seam_x_x_x_XXX tag""
- ex. "svn copy https://svn.jboss.org/repos/seam/branches/Seam_2_0 https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1"
-* In a clean directory checkout the required seam source ( XX as needed)
+* In a clean directory checkout the newly tagged seam source ( XX as needed)
- "svn co https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX seam"
- ex. "svn co https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1 seam"
+* In the original branch/trunk change:
+ - Qualifier back to "-SNAPSHOT" in default.build.properties file.
+ - The version numbers should stay the same
+ - Any new work is that versions snapshot
+ - Revert the Maven repository changes if needed
-Building and Checking Diff
+Building and Checking Dist
--------------------------
-* Run "mkdir ../releaselogs"
+* Run "mkdir ../releaselogs" for release artifacts.
+
* Initial build and test suite execution
- - run initial build to get dependencies and other requirements
+ - run initial build to download dependencies and setup env.
- run "ant > ../releaselogs/x.x.x.XX.initbuild.txt"
- - edit build.properties and un-comment "validate.xml = true"
- - run "ant cleanall testall testreport > ../releaselogs/x.x.x.XX.testallreport.txt"
+ - run "ant -Dvalidate.xml=true cleanall testall testreport > ../releaselogs/x.x.x.XX.testallreport.txt"
- check report/junit-noframes.html
- There should be no failures or errors.
- run "cp -R test-output ../releaselogs"
- run "cp -R test-report ../releaselogs"
- - comment out "validate.xml = true" in build.properties
+
* Create the distribution build
- run "ant cleanall dist > ../releaselogs/x.x.x.XX.distbuild.txt"
- Use the dist build for all example tests
-* Diff the zip, gz, and exploded version of the build
- - ex.
- - explode the zip and gz into a tmp dir
- - cp distribution directory into the tmp dir
- - in tmp dir run:
+
+* Diff the zip, gz, and exploded version of the dist build
+ - example of how to do it:
+ - explode the zip and gz into "../tmp/zip" and "../tmp/gz"
+ - cp distribution directory into "../tmp/dist"
+ - in "../tmp" run:
- "diff -r ./gz/. ./zip/."
- - "diff -r ./gz/. ./dir/."
+ - "diff -r ./gz/. ./dist/."
- There should be no differences.
+ - Delete "../tmp" if you wish
+
* check that the following files/directories exist in the dist "ls -1"
-bootstrap
-build
-build.properties
-build.xml
-changelog.txt
-doc
-examples
-lgpl.txt
-lib
-mail
-readme.txt
-seam
-seam-gen
-seam-text.g
-seam.bat
-seam2migration.txt
-src
-ui
+ bootstrap
+ build
+ build.properties
+ build.xml
+ changelog.txt
+ doc
+ examples
+ lgpl.txt
+ lib
+ mail
+ readme.txt
+ seam
+ seam-gen
+ seam-text.g
+ seam.bat
+ seam2migration.txt
+ src
+ ui
* check that the following source directories exist in the dist "ls -1 src"
-debug
-gen
-ioc
-jbas5
-mail
-main
-pdf
-remoting
-test
+ debug
+ gen
+ ioc
+ jbas5
+ mail
+ main
+ pdf
+ remoting
+ test
* check that the following examples exist in the dist "ls -1 examples"
-blog
-booking
-build.xml
-contactlist
-drools
-dvdstore
-groovybooking
-hibernate
-icefaces
-itext
-jee5
-jpa
-mail
-messages
-nestedbooking
-numberguess
-quartz
-readme.txt
-registration
-remoting
-seam-examples.html
-seambay
-seamdiscs
-seampay
-seamspace
-spring
-todo
-ui
-wiki
+ blog
+ booking
+ build.xml
+ contactlist
+ drools
+ dvdstore
+ groovybooking
+ hibernate
+ icefaces
+ itext
+ jee5
+ jpa
+ mail
+ messages
+ nestedbooking
+ numberguess
+ quartz
+ readme.txt
+ registration
+ remoting
+ seambay
+ seamdiscs
+ seampay
+ seamspace
+ spring
+ todo
+ ui
+ wiki
-* [future] jar, archive, dependency report
-* [future] directory structure report
+* Archive reports
+ - run these in the dist directory
+ find . -name *.jar > ../releaselogs/jarlist.txt
+ find . -name *.sar > ../releaselogs/sarlist.txt
+ find . -name *.war > ../releaselogs/warlist.txt
+ find . -name *.ear > ../releaselogs/earlist.txt
+ find . -name *.zip > ../releaselogs/ziplist.txt
+ find . -name *.gz > ../releaselogs/gzlist.txt
+ find . -name *seam*.jar > ../releaselogs/seamjarlist.txt
+ - Manually review the lists for problems
+ - seam jars all in one place
+ - <TODO: list expected items or provide listing in svn>
-Tests
------
-* edit the $dist/build.properties and set the jboss.home and tomcat.home
+* In the dist run "ant dependencyReport"
+ - run "cp ./dependency-report.txt ../releaselogs"
+ - Review for snapshot dependencies
+ - there should be none.
+ - Compare with real jar versions from META-INF/MANIFEST.MF
+ - <TODO: A tool is needed to do this effectivly.>
+
+* Built source verification
+ - Create a copy of the $DIST directory
+ - In the original run "ant"
+ - diff the original and the built versions
+ - only difference should be build related
+ - <TODO: list expected differences>
+ - Extract seam jars from orig, and the newly built into different dirs
+ - diff the directories
+ - Should be no differences except version of ant and/or jdk versions
+
+Example verification
+--------------------
+* The list of examples below is extensive, and testing may not touch each.
+ - This should be based on risk analysis, and release note review.
+ - For a major/minor GA build they should all be tested.
+ - Any examples that are not tested should be noted.
+* Verify the the following are accurate and up to date:
+ - "$DIST/readme.txt"
+ - "$DIST/examples/readme.txt"
+* For these examples verify the following:
+ - readme.txt is accurate
+ - ant deploy
+ - ant tomcat.deploy - for supported examples
+ - ant test
+ - ant clean
+ - ant undeploy
+* Examples with "(tutorial)" are discussed in the reference guide tutorial.
+ - document should be validated as well
+ - including tomcat deployments
+* Edit the $dist/build.properties and set the jboss.home and tomcat.home
- JBoss AS 4.2.2.GA and Tomcat 6.X
-* Test the steps in the readme.txt
- - this deploys the booking example on JBoss 4.2.2
- - Sanity check the application
-* Sanity check the following example applications on JBoss 4.2.2
- - dvdstore
- - jpa
- - hibernate
- - seamspace
+* JBoss 4.2.2 examples
+ - blog (tutorial)
+ - booking (tutorial)
- contactlist
+ - drools
+ - dvdstore (tutorial)
+ - groovybooking
+ - hibernate (tutorial)
+ - icefaces
- itext
+ - jpa
- mail
+ - messages (tutorial)
+ - nestedbooking
+ - numberguess (tutorial)
+ - quartz
+ - registration (tutorial)
+ - remoting/chatroom
+ - remoting/gwt
+ - remoting/helloworld
+ - remoting/poker
+ - remoting/progressbar
+ - seambay
- seamdiscs
- - remoting/chatroom
- - blog
-* Sanity check the following example applications on Tomcat
- - booking
- - dvdstore
+ - seampay
+ - seamspace
- spring
- - jpa
- - hibernate
-* Sanity check the folowing example applications on GlassFish
+ - takeaway
+ - todo (tutorial)
+ - ui
+ - wiki (not ready for testing until 2.1.X)
+* Tomcat 6 examples
+ - Note: use JBoss embedded unless specified differently
+ - blog (tutorial)
+ - booking (tutorial)
+ - dvdstore (tutorial)
+ - hibernate (tutorial)
+ - hibernate (tutorial) without embedded
+ - jpa
+ - jpa without embedded
+ - messages (tutorial)
+ - numberguess (tutorial)
+ - registration (tutorial)
+ - seambay
+ - seampay
+ - todo (tutorial)
+* GlassFish v2.1 examples
- jee5
- jpa
- hibernate
-* Validate /examples/seam-examples.html
- - ant deploypresentation
- - check for errors and spot check apps - they were already test above.
-Test seam-gen & JBDS
--------------
+JBDS and seam-gen verification
+------------------------------
+These tests use a stable version of MySQL and the latest release of JBDS.
+
* export the following tables to MySQL:
-
CREATE TABLE `Person` (
`username` varchar(10) NOT NULL,
`name` varchar(100) NOT NULL,
@@ -171,41 +258,147 @@
CONSTRAINT `owner` FOREIGN KEY (`ownerUsername`) REFERENCES `person` (`username`)
) ENGINE=InnoDB
+* seam-gen review seam-gen chapter of the reference guide
+ - accurate and up to date
* seam-gen EAR
- run "seam setup create-project generate-entities explode"
- - test the app, at least the list and edit pages for Person
+ - during setup choose an EAR project
+ - test the basic functionality of the app (CRUD on each table)
- run "seam new-action new-form restart"
- test both generated pages
- run the unit tests in eclipse using the TestNG plugin
+* seam-gen IceFaces EAR test
+ - run "seam setup create-project generate-entities explode"
+ - during setup choose an EAR project
+ - during setup choose to use IceFaces instead of RichFaces
+ - test the basic functionality of the app (CRUD on each table)
* seam-gen WAR
- run "seam setup create-project generate-entities explode"
- - test the app, at least the list and edit pages for Person
+ - during setup choose a WAR project
+ - test the basic functionality of the app (CRUD on each table)
- run "seam new-action new-form restart"
- test both generated pages
- run the unit tests in eclipse using the TestNG plugin
-* Create a new war project in JBDS
+* JBDS - import the EAR seam-gen generated project into JBDS.
+ - Enable Seam support in project properties
+ - Check that EL code completion works for Seam components
+ - Check that Hibernate Console work on the project
+ - expand the Configuration node
+ - Open HQL editor and query "from SomeEntity" and execute the query
+* JBDS new WAR project
- Reverse engineer entities from MySQL
- - Test generated pages (check hot deployment of Seam components, html)
+ - Create "new Seam Action" and "new Seam Form"
+ - Test generated pages (check hot deployment of Seam components, html)
- Test running unit tests from Eclipse
-* Create a new ear project in JBDS
+* JBDS new EAR project
- Reverse engineer entities from MySQL
- - Test generated pages (check hot deployment of Seam components, html)
- - Test running unit tests from Eclipse
+ - Create "new Seam Action" and "new Seam Form"
+ - Test generated pages (check hot deployment of Seam components, html)
+ - Test running unit tests from JBDS
+* JBDS - test a subset of the examples with testNG plugin.
+ - See "/readme.txt" and "/examples/readme.txt" for details.
+
+Portal Bridge Verification
+--------------------------
+* Use the latest released version of the PortalBridge and JBoss Portal.
+ - http://labs.jboss.com/portletbridge
+ - http://www.jboss.org/jbossportal/
+* Deploy and verify the bridge booking example to JBoss portal.
+* Deploy a second version of the booking example as a separate portlet
+ - <TODO: there may be a new chatroom seam portlet for this testing>
+* Build the seam identity extension with the booking example
+ - <TODO add reference link to the instructions>
+ - Go to the booking demo seamBookingPortlet/pom.xml
+ - go to the bottom and uncomment the identity module.
+ - Build the booking demo and login via the portal admin link.
+ - this should automatically logs you into the seam booking demo
+
+Document review
+---------------
+* Review the API javadocs in both IE and FF.
+ - Specifically for version differences
+ - This is not a full review
+* Review the Reference Guide documentation in both IE and FF.
+ - Review for format and code styles
+ - Review for version numbers, and dependencies
+ - Review any extensive changes based on release notes and the team.
+ - This is not a full review
Final Build + Upload
--------------
-* run "ant cleanall dist"
+* When ready for the release
+ - checkout a clean version of the tag
+ - run "ant cleanall dist > ../releaselogs/x.x.x.XX.finaldistbuild.txt"
+ - diff this to the one used for testing
-* upload .zip and .tar.gz to upload.sf.net
-* do the sf.net file release stuff
-* Do the release procedure for maven as described in build/readme.txt
-* upload the doc directory of the dist to docs.jboss.org
- - remember to update the latest/ dir
-* update the documentation and download pages on jboss.org
-* update the DTDs and XSDs on jboss.com/products/seam
-* announce the release on the news page on jboss.org
+* Follow instructions for sourceforge upload
+ - Create md5 files for the ".zip" and ".tar.gz" files
+ - <QUESTION: do we want to create md5 files for the archives>
+ - upload the .zip and .tar.gz and md5 files to SF FTP "upload.sf.net/incoming" folder
+
+* Login to sourceforge.org and go to jboss.org project
+ - Under admin tab click on "file releases"
+ - Add a release to the "JBoss Seam" project
+ - Set "Status" to "hidden"
+ - Paste this release changelog snippet in the "changelog"
+ - Paste this release readme.txt in the "release notes"
+ - Add the 4 files uploaded to the release
+ - Keep everything hidden for now.
+* Upload the "$DIST/doc" directory to "docs.jboss.com/seam/<NEW VERSION>"
+ - Note: this can take a long time.
+
+* Maven release procedure.(see build/readme.txt for details)
+ - Checkout/update JBoss repository
+ - checkout "svn co https://svn.jboss.org/repos/repository.jboss.org/maven2"
+ - Note this can take a very long time
+ - update (if already local) "svn update ." in the "maven2" directory.
+ - Adding this to an eclipse project with svn plugin can make it much easier.
+ - Set the "offline.repository.jboss.org" property in "build/build.properties"
+ - to the directory you checked out to.
+ - Run "ant releaseSeam" in the build directory
+ - Review and Commit the release changes to repository.jboss.org
+
+Final Coordination and Announcement
+-----------------------------------
+* For a GA release and if its newest version of Seam
+ - Update "http://docs.jboss.com/seam/latest" with the docs from this version.
+ - Not for cr,alpha,beta releases
+ - This can take a long time
+* Update the DTDs and XSDs on jboss.com/products/seam
+ - Easiest way to use a script that checks for changes
+ - <TODO add script to svn>
+ - Update any changes to the site
+* Login to sourceforge.org and modify the Seam release entry
+ - Change the date to today
+ - Change "Status" to active
+* Update the documentation and download pages on seamframework.org
+ - documentation points to "docs.jboss.com"
+ - downloads point to sourceforge download page
+* Update Jira so that version shows as "released"
+* Announce the release
+ - Blog on in.relation.to
+ - seamframework.org news, and forums
+ - jboss.org news
+
Update Demos
------------
-This step is not needed for every point release:
-* upload the booking and dvdstore examples to demo.jboss.com
+* This step is not needed for every point release:
+* Upload the booking and dvdstore examples to demo.jboss.com
+* <TODO more information on what is needed>
+
+Notes
+-----
+* To reapply a tag:
+ - First delete the original
+ - svn delete https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX -m "removing old tag prior to applying updated tag"
+ - ex. svn delete https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1 -m "removing old tag prior to applying updated tag"
+ - Recopy back to tag
+ -"svn copy https://svn.jboss.org/repos/seam/XX/XX https://svn.jboss.org/repos/seam/tags/JBoss_Seam_x_x_x_XXX -m "create JBoss_Seam_x_x_x_XXX tag""
+ - ex. svn copy https://svn.jboss.org/repos/seam/branches/Seam_2_0 https://svn.jboss.org/repos/seam/tags/JBoss_Seam_2_0_2_CR1 -m "Updated tag for 2.0.2.CR1"
+
+[FUTURE]
+--------
+* Store release related scripts (especially when more automated) in svn.
+* Store release logs, and reports in svn.
+* Find a jar/archive reporting tool for detailed dependency, version, location reports.
16 years, 10 months
Seam SVN: r7994 - branches/Seam_1_2_1_AP.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2008-04-21 09:01:51 -0400 (Mon, 21 Apr 2008)
New Revision: 7994
Modified:
branches/Seam_1_2_1_AP/readme.txt
Log:
JBPAPP-755
Modified: branches/Seam_1_2_1_AP/readme.txt
===================================================================
--- branches/Seam_1_2_1_AP/readme.txt 2008-04-21 04:39:48 UTC (rev 7993)
+++ branches/Seam_1_2_1_AP/readme.txt 2008-04-21 13:01:51 UTC (rev 7994)
@@ -1,6 +1,6 @@
JBoss Seam - Contextual Component framework for Java EE 5
=========================================================
-version 1.2.0.PATCH1, February 2007
+version 1.2.1, March 2007
This software is distributed under the terms of the FSF Lesser Gnu
Public License (see lgpl.txt).
@@ -8,10 +8,9 @@
Get Up And Running Quick
------------------------
-1. Install JBoss AS 4.0.5.GA with the EJB 3.0 profile selected
- using the JEMS installer
+1. Download and unpack JBoss AS 4.2.2.GA
- http://jboss.sourceforge.net/jnlp/jems-installer-1.2.0.BETA3.jnlp
+ http://www.jboss.org/jbossas/downloads/
2. Edit the "build.properties" file and change jboss.home to your
JBoss AS installation directory
@@ -52,4 +51,4 @@
----------
* Read the documentation in the "doc/reference/en" directory
-* Read the online FAQ http://www.jboss.com/products/seam/faq
+* Read the online FAQ http://www.seamframework.org/Documentation/FAQs
16 years, 10 months
Seam SVN: r7993 - trunk/src/main/org/jboss/seam/core.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2008-04-21 00:39:48 -0400 (Mon, 21 Apr 2008)
New Revision: 7993
Modified:
trunk/src/main/org/jboss/seam/core/ConversationPropagation.java
Log:
didn't mean to include this
Modified: trunk/src/main/org/jboss/seam/core/ConversationPropagation.java
===================================================================
--- trunk/src/main/org/jboss/seam/core/ConversationPropagation.java 2008-04-21 04:10:06 UTC (rev 7992)
+++ trunk/src/main/org/jboss/seam/core/ConversationPropagation.java 2008-04-21 04:39:48 UTC (rev 7993)
@@ -101,25 +101,35 @@
private void restoreNaturalConversationId(Map parameters)
{
+ //First, try to get the conversation id from the request parameter defined for the page
String viewId = Pages.getCurrentViewId();
if ( viewId!=null )
{
- Page page = Pages.instance().getPage(viewId);
+ Page page = Pages.instance().getPage(viewId);
if(conversationName != null)
{
- ConversationIdParameter currentConversationIdParameter = Pages.instance().getConversationIdParameter(conversationName);
+ ConversationIdParameter currentConversationIdParameter = Pages.instance().getConversationIdParameter(conversationName);
+
if(currentConversationIdParameter == null)
{
throw new IllegalStateException("The conversationName specified: " + conversationName + ", does not exist.");
}
- conversationId = currentConversationIdParameter.getRequestConversationId(parameters);
+ // Try to restore the conversation from parameters (the user has specified the exact conversation to restore using f:param)
+ conversationId = currentConversationIdParameter.getRequestConversationId(parameters);
+ if (conversationId == null)
+ {
+ // Try to restore the conversation from the EL expression on the conversation definition
+ conversationId = currentConversationIdParameter.getConversationId();
+ }
}
else
{
conversationId = page.getConversationIdParameter().getRequestConversationId(parameters);
- }
+ }
+ //TODO: how about the parent conversation id?
}
+
}
private void restoreSyntheticConversationId(Map parameters)
16 years, 10 months
Seam SVN: r7992 - branches/Seam_2_0/src/debug/META-INF.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2008-04-21 00:10:06 -0400 (Mon, 21 Apr 2008)
New Revision: 7992
Modified:
branches/Seam_2_0/src/debug/META-INF/debug.xhtml
Log:
JBSEAM-1370
Modified: branches/Seam_2_0/src/debug/META-INF/debug.xhtml
===================================================================
--- branches/Seam_2_0/src/debug/META-INF/debug.xhtml 2008-04-21 04:09:54 UTC (rev 7991)
+++ branches/Seam_2_0/src/debug/META-INF/debug.xhtml 2008-04-21 04:10:06 UTC (rev 7992)
@@ -12,6 +12,7 @@
body, div, span, td, th, caption { font-family: 'Trebuchet MS', Verdana, Arial, Sans-Serif; font-size: small; }
ul, li, pre { padding: 0; margin: 0; }
h1 { color: #090; }
+ h1 a { text-decoration: none; color: #090; }
h2, h2 span { font-size: large; color: #339; }
h2 a { text-decoration: none; color: #339; }
pre { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9; }
@@ -52,7 +53,7 @@
</script>
</head>
<body>
- <h1>JBoss Seam Debug Page</h1>
+ <h1><h:outputLink value="#{facesContext.externalContext.request.requestURI}">JBoss Seam Debug Page</h:outputLink></h1>
<div>
This page allows you to view and inspect any component in any Seam context
associated with the current session.
@@ -232,4 +233,4 @@
</body>
</f:view>
-</html>
\ No newline at end of file
+</html>
16 years, 10 months
Seam SVN: r7991 - trunk/src/debug/META-INF.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2008-04-21 00:09:54 -0400 (Mon, 21 Apr 2008)
New Revision: 7991
Modified:
trunk/src/debug/META-INF/debug.xhtml
Log:
JBSEAM-1370
Modified: trunk/src/debug/META-INF/debug.xhtml
===================================================================
--- trunk/src/debug/META-INF/debug.xhtml 2008-04-21 02:56:06 UTC (rev 7990)
+++ trunk/src/debug/META-INF/debug.xhtml 2008-04-21 04:09:54 UTC (rev 7991)
@@ -12,6 +12,7 @@
body, div, span, td, th, caption { font-family: 'Trebuchet MS', Verdana, Arial, Sans-Serif; font-size: small; }
ul, li, pre { padding: 0; margin: 0; }
h1 { color: #090; }
+ h1 a { text-decoration: none; color: #090; }
h2, h2 span { font-size: large; color: #339; }
h2 a { text-decoration: none; color: #339; }
pre { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9; }
@@ -52,7 +53,7 @@
</script>
</head>
<body>
- <h1>JBoss Seam Debug Page</h1>
+ <h1><h:outputLink value="#{facesContext.externalContext.request.requestURI}">JBoss Seam Debug Page</h:outputLink></h1>
<div>
This page allows you to view and inspect any component in any Seam context
associated with the current session.
@@ -232,4 +233,4 @@
</body>
</f:view>
-</html>
\ No newline at end of file
+</html>
16 years, 10 months
Seam SVN: r7990 - in trunk/src/main/org/jboss/seam: security/management and 2 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2008-04-20 22:56:06 -0400 (Sun, 20 Apr 2008)
New Revision: 7990
Added:
trunk/src/main/org/jboss/seam/util/AnnotatedBeanProperty.java
Removed:
trunk/src/main/org/jboss/seam/security/management/BeanProperty.java
Modified:
trunk/src/main/org/jboss/seam/core/ConversationPropagation.java
trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java
trunk/src/main/org/jboss/seam/security/permission/dynamic/JpaDynamicPermissionStore.java
Log:
implemented listPermissions()
Modified: trunk/src/main/org/jboss/seam/core/ConversationPropagation.java
===================================================================
--- trunk/src/main/org/jboss/seam/core/ConversationPropagation.java 2008-04-21 02:30:29 UTC (rev 7989)
+++ trunk/src/main/org/jboss/seam/core/ConversationPropagation.java 2008-04-21 02:56:06 UTC (rev 7990)
@@ -101,35 +101,25 @@
private void restoreNaturalConversationId(Map parameters)
{
- //First, try to get the conversation id from the request parameter defined for the page
String viewId = Pages.getCurrentViewId();
if ( viewId!=null )
{
- Page page = Pages.instance().getPage(viewId);
+ Page page = Pages.instance().getPage(viewId);
if(conversationName != null)
{
- ConversationIdParameter currentConversationIdParameter = Pages.instance().getConversationIdParameter(conversationName);
-
+ ConversationIdParameter currentConversationIdParameter = Pages.instance().getConversationIdParameter(conversationName);
if(currentConversationIdParameter == null)
{
throw new IllegalStateException("The conversationName specified: " + conversationName + ", does not exist.");
}
- // Try to restore the conversation from parameters (the user has specified the exact conversation to restore using f:param)
- conversationId = currentConversationIdParameter.getRequestConversationId(parameters);
- if (conversationId == null)
- {
- // Try to restore the conversation from the EL expression on the conversation definition
- conversationId = currentConversationIdParameter.getConversationId();
- }
+ conversationId = currentConversationIdParameter.getRequestConversationId(parameters);
}
else
{
conversationId = page.getConversationIdParameter().getRequestConversationId(parameters);
- }
- //TODO: how about the parent conversation id?
+ }
}
-
}
private void restoreSyntheticConversationId(Map parameters)
Deleted: trunk/src/main/org/jboss/seam/security/management/BeanProperty.java
===================================================================
--- trunk/src/main/org/jboss/seam/security/management/BeanProperty.java 2008-04-21 02:30:29 UTC (rev 7989)
+++ trunk/src/main/org/jboss/seam/security/management/BeanProperty.java 2008-04-21 02:56:06 UTC (rev 7990)
@@ -1,173 +0,0 @@
-package org.jboss.seam.security.management;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-/**
- * A convenience class for working with an annotated property (either a field or method) of
- * a JavaBean class.
- *
- * @author Shane Bryzak
- */
-public class BeanProperty
-{
- private Field propertyField;
- private Method propertyGetter;
- private Method propertySetter;
- private Annotation annotation;
- private String name;
- private Class propertyClass;
-
- private boolean isFieldProperty;
-
- private BeanProperty(Field propertyField, Annotation annotation)
- {
- this.propertyField = propertyField;
- isFieldProperty = true;
- this.annotation = annotation;
- this.name = propertyField.getName();
- this.propertyClass = propertyField.getDeclaringClass();
- }
-
- private BeanProperty(Method propertyMethod, Annotation annotation)
- {
- if (!(propertyMethod.getName().startsWith("get") || (propertyMethod.getName().startsWith("is"))))
- {
- throw new IllegalArgumentException("Bean property method name " + propertyMethod.getClass().getName() +
- "." + propertyMethod.getName() + "() must start with \"get\" or \"is\".");
- }
-
- if (propertyMethod.getReturnType().equals(void.class) || propertyMethod.getParameterTypes().length > 0)
- {
- throw new IllegalArgumentException("Bean property method " + propertyMethod.getClass().getName() +
- "." + propertyMethod.getName() + "() must return a value and take no parameters");
- }
-
- this.propertyGetter = propertyMethod;
- this.propertyClass = propertyMethod.getReturnType();
-
- String methodName = propertyMethod.getName();
-
- this.name = methodName.startsWith("get") ?
- (methodName.substring(3,4).toLowerCase() + methodName.substring(4)) :
- (methodName.substring(2,3).toLowerCase() + methodName.substring(3));
-
- String setterName = propertyMethod.getName().startsWith("get") ?
- ("set" + methodName.substring(3)) : ("set" + methodName.substring(2));
-
- try
- {
- propertySetter = propertyMethod.getDeclaringClass().getMethod(setterName, new Class[] {propertyMethod.getReturnType()});
- }
- catch (NoSuchMethodException ex)
- {
- throw new IllegalArgumentException("Bean property method " + propertyMethod.getClass().getName() +
- "." + propertyMethod.getName() + "() must have a corresponding setter method.");
- }
-
- isFieldProperty = false;
- this.annotation = annotation;
- }
-
- public void setValue(Object bean, Object value)
- {
- if (isFieldProperty)
- {
- boolean accessible = propertyField.isAccessible();
- try
- {
- propertyField.setAccessible(true);
- propertyField.set(bean, value);
- }
- catch (IllegalAccessException ex)
- {
- throw new RuntimeException("Exception setting bean property", ex);
- }
- finally
- {
- propertyField.setAccessible(accessible);
- }
- }
- else
- {
- try
- {
- propertySetter.invoke(bean, value);
- }
- catch (Exception ex)
- {
- throw new RuntimeException("Exception setting bean property", ex);
- }
- }
- }
-
- public Object getValue(Object bean)
- {
- if (isFieldProperty)
- {
- boolean accessible = propertyField.isAccessible();
- try
- {
- propertyField.setAccessible(true);
- return propertyField.get(bean);
- }
- catch (IllegalAccessException ex)
- {
- throw new RuntimeException("Exception getting bean property", ex);
- }
- finally
- {
- propertyField.setAccessible(accessible);
- }
- }
- else
- {
- try
- {
- return propertyGetter.invoke(bean);
- }
- catch (Exception ex)
- {
- throw new RuntimeException("Exception getting bean property", ex);
- }
- }
- }
-
- public Annotation getAnnotation()
- {
- return annotation;
- }
-
- public String getName()
- {
- return name;
- }
-
- public Class getPropertyClass()
- {
- return propertyClass;
- }
-
-
- public static BeanProperty scanForProperty(Class cls, Class<? extends Annotation> annotation)
- {
- for (Field f : cls.getFields())
- {
- if (f.isAnnotationPresent(annotation))
- {
- return new BeanProperty(f, f.getAnnotation(annotation));
- }
- }
-
- for (Method m : cls.getMethods())
- {
- if (m.isAnnotationPresent(annotation))
- {
- return new BeanProperty(m, m.getAnnotation(annotation));
- }
- }
-
- return null;
- }
-}
\ No newline at end of file
Modified: trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java
===================================================================
--- trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java 2008-04-21 02:30:29 UTC (rev 7989)
+++ trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java 2008-04-21 02:56:06 UTC (rev 7990)
@@ -34,6 +34,7 @@
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.security.Identity;
+import org.jboss.seam.util.AnnotatedBeanProperty;
/**
* The default identity store implementation, uses JPA as its persistence mechanism.
@@ -61,14 +62,14 @@
private Class userClass;
private Class roleClass;
- private BeanProperty userPrincipalProperty;
- private BeanProperty userPasswordProperty;
- private BeanProperty userRolesProperty;
- private BeanProperty userEnabledProperty;
- private BeanProperty userFirstNameProperty;
- private BeanProperty userLastNameProperty;
- private BeanProperty roleNameProperty;
- private BeanProperty roleGroupsProperty;
+ private AnnotatedBeanProperty<UserPrincipal> userPrincipalProperty;
+ private AnnotatedBeanProperty<UserPassword> userPasswordProperty;
+ private AnnotatedBeanProperty<UserRoles> userRolesProperty;
+ private AnnotatedBeanProperty<UserEnabled> userEnabledProperty;
+ private AnnotatedBeanProperty<UserFirstName> userFirstNameProperty;
+ private AnnotatedBeanProperty<UserLastName> userLastNameProperty;
+ private AnnotatedBeanProperty<RoleName> roleNameProperty;
+ private AnnotatedBeanProperty<RoleGroups> roleGroupsProperty;
public Set<Feature> getFeatures()
{
@@ -116,15 +117,15 @@
private void initProperties()
{
- userPrincipalProperty = BeanProperty.scanForProperty(userClass, UserPrincipal.class);
- userPasswordProperty = BeanProperty.scanForProperty(userClass, UserPassword.class);
- userRolesProperty = BeanProperty.scanForProperty(userClass, UserRoles.class);
- userEnabledProperty = BeanProperty.scanForProperty(userClass, UserEnabled.class);
- userFirstNameProperty = BeanProperty.scanForProperty(userClass, UserFirstName.class);
- userLastNameProperty = BeanProperty.scanForProperty(userClass, UserLastName.class);
+ userPrincipalProperty = AnnotatedBeanProperty.scanForProperty(userClass, UserPrincipal.class);
+ userPasswordProperty = AnnotatedBeanProperty.scanForProperty(userClass, UserPassword.class);
+ userRolesProperty = AnnotatedBeanProperty.scanForProperty(userClass, UserRoles.class);
+ userEnabledProperty = AnnotatedBeanProperty.scanForProperty(userClass, UserEnabled.class);
+ userFirstNameProperty = AnnotatedBeanProperty.scanForProperty(userClass, UserFirstName.class);
+ userLastNameProperty = AnnotatedBeanProperty.scanForProperty(userClass, UserLastName.class);
- roleNameProperty = BeanProperty.scanForProperty(roleClass, RoleName.class);
- roleGroupsProperty = BeanProperty.scanForProperty(roleClass, RoleGroups.class);
+ roleNameProperty = AnnotatedBeanProperty.scanForProperty(roleClass, RoleName.class);
+ roleGroupsProperty = AnnotatedBeanProperty.scanForProperty(roleClass, RoleGroups.class);
if (userPrincipalProperty == null)
{
@@ -410,7 +411,7 @@
throw new NoSuchUserException("Could not enable user, user '" + name + "' does not exist");
}
- // If it's already enabled return false
+ // Can't enable an already-enabled user, return false
if (((Boolean) userEnabledProperty.getValue(user)) == true)
{
return false;
@@ -435,7 +436,7 @@
throw new NoSuchUserException("Could not disable user, user '" + name + "' does not exist");
}
- // If it's already disabled return false
+ // Can't disable an already-disabled user, return false
if (((Boolean) userEnabledProperty.getValue(user)) == false)
{
return false;
@@ -648,6 +649,16 @@
}
}
+ public String getUserName(Object user)
+ {
+ return (String) userPrincipalProperty.getValue(user);
+ }
+
+ public String getRoleName(Object role)
+ {
+ return (String) roleNameProperty.getValue(role);
+ }
+
public Object lookupRole(String role)
{
try
Modified: trunk/src/main/org/jboss/seam/security/permission/dynamic/JpaDynamicPermissionStore.java
===================================================================
--- trunk/src/main/org/jboss/seam/security/permission/dynamic/JpaDynamicPermissionStore.java 2008-04-21 02:30:29 UTC (rev 7989)
+++ trunk/src/main/org/jboss/seam/security/permission/dynamic/JpaDynamicPermissionStore.java 2008-04-21 02:56:06 UTC (rev 7990)
@@ -5,7 +5,10 @@
import java.io.Serializable;
import java.security.Principal;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.persistence.EntityManager;
@@ -28,10 +31,11 @@
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.security.Role;
-import org.jboss.seam.security.management.BeanProperty;
+import org.jboss.seam.security.SimplePrincipal;
import org.jboss.seam.security.management.JpaIdentityStore;
import org.jboss.seam.security.permission.Permission;
import org.jboss.seam.security.permission.PermissionStore;
+import org.jboss.seam.util.AnnotatedBeanProperty;
/**
* A permission store implementation that uses JPA as its persistence mechanism.
@@ -51,15 +55,15 @@
private Class userPermissionClass;
private Class rolePermissionClass;
- private BeanProperty userProperty;
- private BeanProperty roleProperty;
+ private AnnotatedBeanProperty<PermissionUser> userProperty;
+ private AnnotatedBeanProperty<PermissionRole> roleProperty;
- private BeanProperty targetProperty;
- private BeanProperty actionProperty;
- private BeanProperty discriminatorProperty;
+ private AnnotatedBeanProperty<PermissionTarget> targetProperty;
+ private AnnotatedBeanProperty<PermissionAction> actionProperty;
+ private AnnotatedBeanProperty<PermissionDiscriminator> discriminatorProperty;
- private BeanProperty roleTargetProperty;
- private BeanProperty roleActionProperty;
+ private AnnotatedBeanProperty<PermissionTarget> roleTargetProperty;
+ private AnnotatedBeanProperty<PermissionAction> roleActionProperty;
private String selectUserPermissionQuery;
private String selectRolePermissionQuery;
@@ -84,25 +88,25 @@
protected void initProperties()
{
- userProperty = BeanProperty.scanForProperty(userPermissionClass, PermissionUser.class);
- targetProperty = BeanProperty.scanForProperty(userPermissionClass, PermissionTarget.class);
- actionProperty = BeanProperty.scanForProperty(userPermissionClass, PermissionAction.class);
+ userProperty = AnnotatedBeanProperty.scanForProperty(userPermissionClass, PermissionUser.class);
+ targetProperty = AnnotatedBeanProperty.scanForProperty(userPermissionClass, PermissionTarget.class);
+ actionProperty = AnnotatedBeanProperty.scanForProperty(userPermissionClass, PermissionAction.class);
if (rolePermissionClass != null)
{
- roleProperty = BeanProperty.scanForProperty(rolePermissionClass, PermissionRole.class);
+ roleProperty = AnnotatedBeanProperty.scanForProperty(rolePermissionClass, PermissionRole.class);
if (roleProperty != null)
{
- roleTargetProperty = BeanProperty.scanForProperty(rolePermissionClass, PermissionTarget.class);
- roleActionProperty = BeanProperty.scanForProperty(rolePermissionClass, PermissionAction.class);
+ roleTargetProperty = AnnotatedBeanProperty.scanForProperty(rolePermissionClass, PermissionTarget.class);
+ roleActionProperty = AnnotatedBeanProperty.scanForProperty(rolePermissionClass, PermissionAction.class);
}
}
else
{
- roleProperty = BeanProperty.scanForProperty(userPermissionClass, PermissionRole.class);
+ roleProperty = AnnotatedBeanProperty.scanForProperty(userPermissionClass, PermissionRole.class);
if (roleProperty != null)
{
- discriminatorProperty = BeanProperty.scanForProperty(userPermissionClass, PermissionDiscriminator.class);
+ discriminatorProperty = AnnotatedBeanProperty.scanForProperty(userPermissionClass, PermissionDiscriminator.class);
}
}
@@ -149,16 +153,7 @@
query.append(targetProperty.getName());
query.append(" = :target and ");
query.append(actionProperty.getName());
- query.append(" = :action and ");
- query.append(userProperty.getName());
- query.append(" = :recipient");
-
- if (rolePermissionClass == null)
- {
- query.append(" and ");
- query.append(discriminatorProperty.getName());
- query.append(" = :discriminator");
- }
+ query.append(" = :action");
selectUserPermissionQuery = query.toString();
@@ -171,9 +166,7 @@
query.append(roleTargetProperty.getName());
query.append(" = :target and ");
query.append(roleActionProperty.getName());
- query.append(" = :action and ");
- query.append(roleProperty.getName());
- query.append(" = :recipient");
+ query.append(" = :action");
selectRolePermissionQuery = query.toString();
}
@@ -214,8 +207,8 @@
Object instance = userPermissionClass.newInstance();
targetProperty.setValue(instance, permission.getTarget().toString());
- actionProperty.setValue(instance, permission.getAction());
- userProperty.setValue(instance, permission.getRecipient().getName());
+ actionProperty.setValue(instance, permission.getAction());
+ userProperty.setValue(instance, resolvePrincipal(permission.getRecipient()));
if (discriminatorProperty != null)
{
@@ -269,7 +262,8 @@
/**
* If the user or role properties in the entity class refer to other entities, then this method
- * uses JpaIdentityStore to lookup that user or role entity.
+ * uses the JpaIdentityStore (if available) to lookup that user or role entity. Otherwise it
+ * simply returns the name of the recipient.
*
* @param recipient
* @return
@@ -294,23 +288,121 @@
return recipient.getName();
}
+
+ protected String resolvePrincipalName(Object principal, boolean isUser
+ )
+ {
+ if (principal instanceof String)
+ {
+ return (String) principal;
+ }
+
+ JpaIdentityStore identityStore = (JpaIdentityStore) Component.getInstance(JpaIdentityStore.class, true);
+
+ if (identityStore != null)
+ {
+ if (isUser && identityStore.getUserClass().equals(principal.getClass()))
+ {
+ return identityStore.getUserName(principal);
+ }
+
+ if (!isUser && identityStore.getRoleClass().equals(principal.getClass()))
+ {
+ return identityStore.getRoleName(principal);
+ }
+ }
+
+ throw new IllegalArgumentException("Cannot resolve principal name for principal " + principal);
+ }
public List<Permission> listPermissions(Object target, String action)
{
- return lookupEntityManager().createQuery(
- "from " + userPermissionClass.getName() +
- " where target = :target and action = :action")
- .setParameter("target", target)
- .setParameter("action", action)
- .getResultList();
+ List<Permission> permissions = new ArrayList<Permission>();
+
+ Query permissionQuery = lookupEntityManager().createQuery(selectUserPermissionQuery)
+ .setParameter("target", target);
+
+ if (action != null)
+ {
+ permissionQuery.setParameter("action", action);
+ }
+
+ List userPermissions = permissionQuery.getResultList();
+
+ Map<String,Principal> principalCache = new HashMap<String,Principal>();
+
+ boolean useDiscriminator = rolePermissionClass == null && discriminatorProperty != null;
+
+ for (Object permission : userPermissions)
+ {
+ Principal principal;
+ boolean isUser = true;
+
+ if (useDiscriminator &&
+ discriminatorProperty.getAnnotation().roleValue().equals(discriminatorProperty.getValue(permission)))
+ {
+ isUser = false;
+ }
+
+ String name = resolvePrincipalName(isUser ? userProperty.getValue(permission) :
+ roleProperty.getValue(permission), isUser);
+
+ String key = (isUser ? "user:" : "role:") + name;
+
+ if (!principalCache.containsKey(key))
+ {
+ principal = isUser ? new SimplePrincipal(name) : new Role(name);
+ principalCache.put(key, principal);
+ }
+ else
+ {
+ principal = principalCache.get(key);
+ }
+
+ permissions.add(new Permission(target, (String) (action != null ? action : actionProperty.getValue(permission)),
+ principal));
+ }
+
+ if (rolePermissionClass == null)
+ {
+ permissionQuery = lookupEntityManager().createQuery(selectRolePermissionQuery)
+ .setParameter("target", target);
+
+ if (action != null)
+ {
+ permissionQuery.setParameter("action", action);
+ }
+
+ List rolePermissions = permissionQuery.getResultList();
+
+ for (Object permission : rolePermissions)
+ {
+ Principal principal;
+
+ String name = resolvePrincipalName(roleProperty.getValue(permission), false);
+ String key = "role:" + name;
+
+ if (!principalCache.containsKey(key))
+ {
+ principal = new Role(name);
+ principalCache.put(key, principal);
+ }
+ else
+ {
+ principal = principalCache.get(key);
+ }
+
+ permissions.add(new Permission(target, (String) (action != null ? action :
+ roleActionProperty.getValue(permission)), principal));
+ }
+ }
+
+ return permissions;
}
public List<Permission> listPermissions(Object target)
{
- return lookupEntityManager().createQuery(
- "from " + userPermissionClass.getName() + " where target = :target")
- .setParameter("target", target)
- .getResultList();
+ return listPermissions(target, null);
}
public List<Permission> listPermissions(Set<Object> targets)
Added: trunk/src/main/org/jboss/seam/util/AnnotatedBeanProperty.java
===================================================================
--- trunk/src/main/org/jboss/seam/util/AnnotatedBeanProperty.java (rev 0)
+++ trunk/src/main/org/jboss/seam/util/AnnotatedBeanProperty.java 2008-04-21 02:56:06 UTC (rev 7990)
@@ -0,0 +1,173 @@
+package org.jboss.seam.util;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * A convenience class for working with an annotated property (either a field or method) of
+ * a JavaBean class.
+ *
+ * @author Shane Bryzak
+ */
+public class AnnotatedBeanProperty<T extends Annotation>
+{
+ private Field propertyField;
+ private Method propertyGetter;
+ private Method propertySetter;
+ private T annotation;
+ private String name;
+ private Class propertyClass;
+
+ private boolean isFieldProperty;
+
+ private AnnotatedBeanProperty(Field propertyField, T annotation)
+ {
+ this.propertyField = propertyField;
+ isFieldProperty = true;
+ this.annotation = annotation;
+ this.name = propertyField.getName();
+ this.propertyClass = propertyField.getDeclaringClass();
+ }
+
+ private AnnotatedBeanProperty(Method propertyMethod, T annotation)
+ {
+ if (!(propertyMethod.getName().startsWith("get") || (propertyMethod.getName().startsWith("is"))))
+ {
+ throw new IllegalArgumentException("Bean property method name " + propertyMethod.getClass().getName() +
+ "." + propertyMethod.getName() + "() must start with \"get\" or \"is\".");
+ }
+
+ if (propertyMethod.getReturnType().equals(void.class) || propertyMethod.getParameterTypes().length > 0)
+ {
+ throw new IllegalArgumentException("Bean property method " + propertyMethod.getClass().getName() +
+ "." + propertyMethod.getName() + "() must return a value and take no parameters");
+ }
+
+ this.propertyGetter = propertyMethod;
+ this.propertyClass = propertyMethod.getReturnType();
+
+ String methodName = propertyMethod.getName();
+
+ this.name = methodName.startsWith("get") ?
+ (methodName.substring(3,4).toLowerCase() + methodName.substring(4)) :
+ (methodName.substring(2,3).toLowerCase() + methodName.substring(3));
+
+ String setterName = propertyMethod.getName().startsWith("get") ?
+ ("set" + methodName.substring(3)) : ("set" + methodName.substring(2));
+
+ try
+ {
+ propertySetter = propertyMethod.getDeclaringClass().getMethod(setterName, new Class[] {propertyMethod.getReturnType()});
+ }
+ catch (NoSuchMethodException ex)
+ {
+ throw new IllegalArgumentException("Bean property method " + propertyMethod.getClass().getName() +
+ "." + propertyMethod.getName() + "() must have a corresponding setter method.");
+ }
+
+ isFieldProperty = false;
+ this.annotation = annotation;
+ }
+
+ public void setValue(Object bean, Object value)
+ {
+ if (isFieldProperty)
+ {
+ boolean accessible = propertyField.isAccessible();
+ try
+ {
+ propertyField.setAccessible(true);
+ propertyField.set(bean, value);
+ }
+ catch (IllegalAccessException ex)
+ {
+ throw new RuntimeException("Exception setting bean property", ex);
+ }
+ finally
+ {
+ propertyField.setAccessible(accessible);
+ }
+ }
+ else
+ {
+ try
+ {
+ propertySetter.invoke(bean, value);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException("Exception setting bean property", ex);
+ }
+ }
+ }
+
+ public Object getValue(Object bean)
+ {
+ if (isFieldProperty)
+ {
+ boolean accessible = propertyField.isAccessible();
+ try
+ {
+ propertyField.setAccessible(true);
+ return propertyField.get(bean);
+ }
+ catch (IllegalAccessException ex)
+ {
+ throw new RuntimeException("Exception getting bean property", ex);
+ }
+ finally
+ {
+ propertyField.setAccessible(accessible);
+ }
+ }
+ else
+ {
+ try
+ {
+ return propertyGetter.invoke(bean);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException("Exception getting bean property", ex);
+ }
+ }
+ }
+
+ public T getAnnotation()
+ {
+ return annotation;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public Class getPropertyClass()
+ {
+ return propertyClass;
+ }
+
+
+ public static AnnotatedBeanProperty scanForProperty(Class cls, Class<? extends Annotation> annotation)
+ {
+ for (Field f : cls.getFields())
+ {
+ if (f.isAnnotationPresent(annotation))
+ {
+ return new AnnotatedBeanProperty(f, f.getAnnotation(annotation));
+ }
+ }
+
+ for (Method m : cls.getMethods())
+ {
+ if (m.isAnnotationPresent(annotation))
+ {
+ return new AnnotatedBeanProperty(m, m.getAnnotation(annotation));
+ }
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
16 years, 10 months
Seam SVN: r7989 - in trunk/seam-gen: build-scripts and 1 other directories.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2008-04-20 22:30:29 -0400 (Sun, 20 Apr 2008)
New Revision: 7989
Added:
trunk/seam-gen/build-scripts/deployed-jars-ear-war.list
trunk/seam-gen/build-scripts/deployed-jars-ear.list
trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list
trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear.list
Modified:
trunk/seam-gen/build-scripts/build.xml
trunk/seam-gen/build.xml
trunk/seam-gen/icefaces/build-scripts/build.xml
Log:
JBSEAM-2897 for EAR project
Modified: trunk/seam-gen/build-scripts/build.xml
===================================================================
--- trunk/seam-gen/build-scripts/build.xml 2008-04-21 02:12:29 UTC (rev 7988)
+++ trunk/seam-gen/build-scripts/build.xml 2008-04-21 02:30:29 UTC (rev 7989)
@@ -121,13 +121,7 @@
</copy>
<copy todir="${war.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}">
- <include name="richfaces-impl*.jar" />
- <include name="richfaces-ui*.jar" />
- <include name="oscache*.jar" />
- <include name="commons-digester.jar" />
- <include name="commons-beanutils.jar" />
- <include name="jsf-facelets.jar" />
- <include name="jboss-seam-*.jar" />
+ <includesfile name="deployed-jars-war.list" />
<exclude name="jboss-seam-gen.jar" />
</fileset>
</copy>
@@ -151,14 +145,7 @@
</copy>
<copy todir="${ear.dir}/lib">
<fileset dir="${lib.dir}">
- <include name="jbpm*.jar" />
- <include name="jboss-el.jar" />
- <include name="drools-*.jar"/>
- <include name="core.jar"/>
- <include name="janino*.jar"/>
- <include name="antlr-*.jar"/>
- <include name="mvel*.jar"/>
- <include name="richfaces-api*.jar" />
+ <includesfile name="deployed-jars-ear.list" />
</fileset>
</copy>
<copy todir="${ear.dir}/META-INF">
Added: trunk/seam-gen/build-scripts/deployed-jars-ear-war.list
===================================================================
--- trunk/seam-gen/build-scripts/deployed-jars-ear-war.list (rev 0)
+++ trunk/seam-gen/build-scripts/deployed-jars-ear-war.list 2008-04-21 02:30:29 UTC (rev 7989)
@@ -0,0 +1,6 @@
+commons-beanutils.jar
+commons-digester.jar
+jboss-seam-*.jar
+jsf-facelets.jar
+richfaces-impl.jar
+richfaces-ui.jar
Added: trunk/seam-gen/build-scripts/deployed-jars-ear.list
===================================================================
--- trunk/seam-gen/build-scripts/deployed-jars-ear.list (rev 0)
+++ trunk/seam-gen/build-scripts/deployed-jars-ear.list 2008-04-21 02:30:29 UTC (rev 7989)
@@ -0,0 +1,9 @@
+antlr-runtime.jar
+core.jar
+drools-compiler.jar
+drools-core.jar
+janino.jar
+jboss-el.jar
+jbpm-jpdl.jar
+mvel14.jar
+richfaces-api.jar
Modified: trunk/seam-gen/build.xml
===================================================================
--- trunk/seam-gen/build.xml 2008-04-21 02:12:29 UTC (rev 7988)
+++ trunk/seam-gen/build.xml 2008-04-21 02:30:29 UTC (rev 7989)
@@ -677,6 +677,10 @@
file="${base.dir}/resources/WEB-INF/components.xml">
<filterset refid="project"/>
</copy>
+ <copy tofile="${project.home}/deployed-jars-ear.list"
+ file="${base.dir}/build-scripts/deployed-jars-ear.list"/>
+ <copy tofile="${project.home}/deployed-jars-war.list"
+ file="${base.dir}/build-scripts/deployed-jars-ear-war.list"/>
<copy tofile="${project.home}/build.xml"
file="${base.dir}/build-scripts/build.xml">
<filterset refid="project"/>
Modified: trunk/seam-gen/icefaces/build-scripts/build.xml
===================================================================
--- trunk/seam-gen/icefaces/build-scripts/build.xml 2008-04-21 02:12:29 UTC (rev 7988)
+++ trunk/seam-gen/icefaces/build-scripts/build.xml 2008-04-21 02:30:29 UTC (rev 7989)
@@ -120,9 +120,7 @@
</copy>
<copy todir="${war.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}">
- <include name="oscache*.jar" />
- <include name="jboss-seam-*.jar" />
- <include name="commons-beanutils.jar" />
+ <includesfile name="deployed-jars-war.list" />
<exclude name="jboss-seam-gen.jar" />
</fileset>
</copy>
@@ -141,24 +139,16 @@
<include name="jbpm.cfg.xml" />
<include name="*.drl" />
</fileset>
- <fileset dir="${lib.dir}">
- <include name="jboss-seam.jar" />
- </fileset>
- <fileset dir="${basedir}">
- <include name="lib/jbpm*.jar" />
- <include name="lib/jboss-el.jar" />
- <include name="lib/drools-*.jar"/>
- <include name="lib/core.jar"/>
- <include name="lib/janino*.jar"/>
- <include name="lib/antlr-*.jar"/>
- <include name="lib/mvel*.jar"/>
- <include name="lib/icefaces*.jar" />
- <include name="lib/backport-util-concurrent.jar" />
- <include name="lib/commons-fileupload.jar"/>
- <include name="lib/commons-digester.jar"/>
- <exclude name="lib/icefaces-ahs.jar"/>
+ <fileset dir="${lib.dir}">
+ <include name="jboss-seam.jar" />
</fileset>
</copy>
+ <copy todir="${ear.dir}/lib">
+ <fileset dir="${lib.dir}">
+ <includesfile name="deployed-jars-ear.list" />
+ <exclude name="icefaces-ahs.jar"/>
+ </fileset>
+ </copy>
<copy todir="${ear.dir}/META-INF">
<fileset dir="${basedir}/resources/META-INF">
<include name="application.xml" />
Added: trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list
===================================================================
--- trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list (rev 0)
+++ trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list 2008-04-21 02:30:29 UTC (rev 7989)
@@ -0,0 +1,2 @@
+commons-beanutils.jar
+jboss-seam-*.jar
Added: trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear.list
===================================================================
--- trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear.list (rev 0)
+++ trunk/seam-gen/icefaces/build-scripts/deployed-jars-ear.list 2008-04-21 02:30:29 UTC (rev 7989)
@@ -0,0 +1,14 @@
+antlr-runtime.jar
+backport-util-concurrent.jar
+commons-digester.jar
+commons-fileupload.jar
+core.jar
+drools-compiler.jar
+drools-core.jar
+icefaces.jar
+icefaces-comps.jar
+icefaces-facelets.jar
+janino.jar
+jboss-el.jar
+jbpm-jpdl.jar
+mvel14.jar
16 years, 10 months
Seam SVN: r7988 - in branches/Seam_2_0/seam-gen: build-scripts and 1 other directories.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2008-04-20 22:12:29 -0400 (Sun, 20 Apr 2008)
New Revision: 7988
Added:
branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear-war.list
branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear.list
branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list
branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear.list
Modified:
branches/Seam_2_0/seam-gen/build-scripts/build.xml
branches/Seam_2_0/seam-gen/build.xml
branches/Seam_2_0/seam-gen/icefaces/build-scripts/build.xml
Log:
JBSEAM-2897 for EAR support
Modified: branches/Seam_2_0/seam-gen/build-scripts/build.xml
===================================================================
--- branches/Seam_2_0/seam-gen/build-scripts/build.xml 2008-04-21 02:10:12 UTC (rev 7987)
+++ branches/Seam_2_0/seam-gen/build-scripts/build.xml 2008-04-21 02:12:29 UTC (rev 7988)
@@ -121,13 +121,7 @@
</copy>
<copy todir="${war.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}">
- <include name="richfaces-impl*.jar" />
- <include name="richfaces-ui*.jar" />
- <include name="oscache*.jar" />
- <include name="commons-digester.jar" />
- <include name="commons-beanutils.jar" />
- <include name="jsf-facelets.jar" />
- <include name="jboss-seam-*.jar" />
+ <includesfile name="deployed-jars-war.list" />
<exclude name="jboss-seam-gen.jar" />
</fileset>
</copy>
@@ -151,14 +145,7 @@
</copy>
<copy todir="${ear.dir}/lib">
<fileset dir="${lib.dir}">
- <include name="jbpm*.jar" />
- <include name="jboss-el.jar" />
- <include name="drools-*.jar"/>
- <include name="core.jar"/>
- <include name="janino*.jar"/>
- <include name="antlr-*.jar"/>
- <include name="mvel*.jar"/>
- <include name="richfaces-api*.jar" />
+ <includesfile name="deployed-jars-ear.list" />
</fileset>
</copy>
<copy todir="${ear.dir}/META-INF">
Added: branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear-war.list
===================================================================
--- branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear-war.list (rev 0)
+++ branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear-war.list 2008-04-21 02:12:29 UTC (rev 7988)
@@ -0,0 +1,6 @@
+commons-beanutils.jar
+commons-digester.jar
+jboss-seam-*.jar
+jsf-facelets.jar
+richfaces-impl.jar
+richfaces-ui.jar
Added: branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear.list
===================================================================
--- branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear.list (rev 0)
+++ branches/Seam_2_0/seam-gen/build-scripts/deployed-jars-ear.list 2008-04-21 02:12:29 UTC (rev 7988)
@@ -0,0 +1,9 @@
+antlr-runtime.jar
+core.jar
+drools-compiler.jar
+drools-core.jar
+janino.jar
+jboss-el.jar
+jbpm-jpdl.jar
+mvel.jar
+richfaces-api.jar
Modified: branches/Seam_2_0/seam-gen/build.xml
===================================================================
--- branches/Seam_2_0/seam-gen/build.xml 2008-04-21 02:10:12 UTC (rev 7987)
+++ branches/Seam_2_0/seam-gen/build.xml 2008-04-21 02:12:29 UTC (rev 7988)
@@ -676,6 +676,10 @@
file="${base.dir}/resources/WEB-INF/components.xml">
<filterset refid="project"/>
</copy>
+ <copy tofile="${project.home}/deployed-jars-ear.list"
+ file="${base.dir}/build-scripts/deployed-jars-ear.list"/>
+ <copy tofile="${project.home}/deployed-jars-war.list"
+ file="${base.dir}/build-scripts/deployed-jars-ear-war.list"/>
<copy tofile="${project.home}/build.xml"
file="${base.dir}/build-scripts/build.xml">
<filterset refid="project"/>
Modified: branches/Seam_2_0/seam-gen/icefaces/build-scripts/build.xml
===================================================================
--- branches/Seam_2_0/seam-gen/icefaces/build-scripts/build.xml 2008-04-21 02:10:12 UTC (rev 7987)
+++ branches/Seam_2_0/seam-gen/icefaces/build-scripts/build.xml 2008-04-21 02:12:29 UTC (rev 7988)
@@ -120,9 +120,7 @@
</copy>
<copy todir="${war.dir}/WEB-INF/lib">
<fileset dir="${lib.dir}">
- <include name="oscache*.jar" />
- <include name="jboss-seam-*.jar" />
- <include name="commons-beanutils.jar" />
+ <includesfile name="deployed-jars-war.list" />
<exclude name="jboss-seam-gen.jar" />
</fileset>
</copy>
@@ -141,24 +139,16 @@
<include name="jbpm.cfg.xml" />
<include name="*.drl" />
</fileset>
- <fileset dir="${lib.dir}">
- <include name="jboss-seam.jar" />
- </fileset>
- <fileset dir="${basedir}">
- <include name="lib/jbpm*.jar" />
- <include name="lib/jboss-el.jar" />
- <include name="lib/drools-*.jar"/>
- <include name="lib/core.jar"/>
- <include name="lib/janino*.jar"/>
- <include name="lib/antlr-*.jar"/>
- <include name="lib/mvel*.jar"/>
- <include name="lib/icefaces*.jar" />
- <include name="lib/backport-util-concurrent.jar" />
- <include name="lib/commons-fileupload.jar"/>
- <include name="lib/commons-digester.jar"/>
- <exclude name="lib/icefaces-ahs.jar"/>
+ <fileset dir="${lib.dir}">
+ <include name="jboss-seam.jar" />
</fileset>
</copy>
+ <copy todir="${ear.dir}/lib">
+ <fileset dir="${lib.dir}">
+ <includesfile name="deployed-jars-ear.list" />
+ <exclude name="icefaces-ahs.jar"/>
+ </fileset>
+ </copy>
<copy todir="${ear.dir}/META-INF">
<fileset dir="${basedir}/resources/META-INF">
<include name="application.xml" />
Added: branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list
===================================================================
--- branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list (rev 0)
+++ branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear-war.list 2008-04-21 02:12:29 UTC (rev 7988)
@@ -0,0 +1,2 @@
+commons-beanutils.jar
+jboss-seam-*.jar
Added: branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear.list
===================================================================
--- branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear.list (rev 0)
+++ branches/Seam_2_0/seam-gen/icefaces/build-scripts/deployed-jars-ear.list 2008-04-21 02:12:29 UTC (rev 7988)
@@ -0,0 +1,14 @@
+antlr-runtime.jar
+backport-util-concurrent.jar
+commons-digester.jar
+commons-fileupload.jar
+core.jar
+drools-compiler.jar
+drools-core.jar
+icefaces.jar
+icefaces-comps.jar
+icefaces-facelets.jar
+janino.jar
+jboss-el.jar
+jbpm-jpdl.jar
+mvel.jar
16 years, 10 months