diff --git a/.classpath b/.classpath
deleted file mode 100644
index 3ed161e8..00000000
--- a/.classpath
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 84d4d795..00000000
--- a/.cvsignore
+++ /dev/null
@@ -1,13 +0,0 @@
-build
-cache
-dist
-target
-junit*.properties
-*.log
-db-export.xml
-SESSIONS.ser
-*.1
-database.properties
-create-tables.sql
-db
-appfuse.iws
\ No newline at end of file
diff --git a/.project b/.project
deleted file mode 100644
index d9605bcf..00000000
--- a/.project
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- appfuse
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.springframework.ide.eclipse.beans.core.beansvalidator
-
-
-
-
-
- org.springframework.ide.eclipse.beans.core.beansnature
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.springBeansProject b/.springBeansProject
deleted file mode 100644
index a77e90f0..00000000
--- a/.springBeansProject
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- src/dao/org/appfuse/persistence/hibernate/applicationContext-hibernate.xml
- src/service/org/appfuse/service/applicationContext-service.xml
-
-
-
-
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 261eeb9e..00000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/anthill.version b/anthill.version
deleted file mode 100644
index 74710e7e..00000000
--- a/anthill.version
+++ /dev/null
@@ -1 +0,0 @@
-1.6.36
diff --git a/app-settings.xml b/app-settings.xml
deleted file mode 100644
index 1bea723b..00000000
--- a/app-settings.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/appfuse.iml b/appfuse.iml
deleted file mode 100644
index 150ae58b..00000000
--- a/appfuse.iml
+++ /dev/null
@@ -1,447 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/appfuse.ipr b/appfuse.ipr
deleted file mode 100644
index 18e560f3..00000000
--- a/appfuse.ipr
+++ /dev/null
@@ -1,417 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/compile-jsp.xml b/compile-jsp.xml
deleted file mode 100644
index c5701124..00000000
--- a/compile-jsp.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Compiling generated classes from JSPC
-
-
-
-
-
-
-
-
-
-
-
-
-
- Compile JSP in: ${dir-path}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/database.properties.reference b/database.properties.reference
deleted file mode 100644
index 4fa35f16..00000000
--- a/database.properties.reference
+++ /dev/null
@@ -1,136 +0,0 @@
-# As of AppFuse 1.3, the database.properties file is generated dynamically
-# from properties in build.properties. This is so you can have a different
-# database in development than you do as the default. For instance, on my
-# OS X machine, I can move build.properties to ~/.build.properties and
-# use MySQL, while the default database is DB2 in CVS.
-#
-# The values below are now meant to serve as a reference for possible values
-# in build.properties.
-
-
-## PostgreSQL
-hibernate.dialect=net.sf.hibernate.dialect.PostgreSQLDialect
-hibernate.connection.driver_class=org.postgresql.Driver
-hibernate.connection.url=jdbc:postgresql://localhost/appfuse
-hibernate.connection.username=root
-hibernate.connection.password=
-hibernate.query.substitutions=yes 'Y', no 'N'
-
-
-## DB2
-hibernate.dialect = net.sf.hibernate.dialect.DB2Dialect
-hibernate.connection.driver_class = COM.ibm.db2.jdbc.app.DB2Driver
-hibernate.connection.url = jdbc:db2:apptrack
-hibernate.connection.username = admin
-hibernate.connection.password = admin
-hibernate.connection.pool_size = 20
-hibernate.statement_cache.size = 6
-hibernate.show_sql = true
-
-
-## MySQL
-hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect
-hibernate.connection.driver_class = com.mysql.jdbc.Driver
-hibernate.connection.url = jdbc:mysql://localhost:3306/appfuse?autoReconnect=true
-hibernate.connection.username = root
-hibernate.connection.password =
-hibernate.connection.pool_size = 20
-hibernate.statement_cache.size = 6
-hibernate.show_sql = false
-
-
-## Oracle
-hibernate.dialect = net.sf.hibernate.dialect.OracleDialect
-hibernate.connection.driver_class = oracle.jdbc.driver.OracleDriver
-hibernate.connection.username = ora
-hibernate.connection.password = ora
-hibernate.connection.url = jdbc:oracle:thin:@localhost:1521:test
-
-
-## Sybase
-hibernate.dialect = net.sf.hibernate.dialect.SybaseDialect
-hibernate.connection.driver_class = com.sybase.jdbc2.jdbc.SybDriver
-hibernate.connection.username = sa
-hibernate.connection.password = sasasa
-hibernate.connection.url = jdbc:sybase:Tds:co3061835-a:5000/tempdb
-
-
-## HypersonicSQL
-hibernate.dialect = net.sf.hibernate.dialect.HSQLDialect
-hibernate.connection.driver_class org.hsqldb.jdbcDriver
-hibernate.connection.username = sa
-hibernate.connection.password =
-hibernate.connection.url = jdbc:hsqldb:hsql://localhost
-hibernate.connection.url = jdbc:hsqldb:test
-
-
-## Mckoi SQL
-
-hibernate.dialect = net.sf.hibernate.dialect.MckoiDialect
-hibernate.connection.driver_class = com.mckoi.JDBCDriver
-hibernate.connection.url = jdbc:mckoi:///
-hibernate.connection.url = jdbc:mckoi:local://C:/mckoi0.94h/db.conf
-hibernate.connection.username = admin
-hibernate.connection.password = nimda
-
-
-## SAP DB
-
-hibernate.dialect = net.sf.hibernate.dialect.SAPDBDialect
-hibernate.connection.driver_class = com.sap.dbtech.jdbc.DriverSapDB
-hibernate.connection.url = jdbc:sapdb://localhost/TST
-hibernate.connection.username = TEST
-hibernate.connection.password = TEST
-hibernate.query.substitutions yes 'Y', no 'N'
-
-
-## MS SQL Server
-hibernate.dialect = net.sf.hibernate.dialect.SybaseDialect
-hibernate.connection.username = sa
-hibernate.connection.password
-
-
-## JSQL Driver
-hibernate.connection.driver_class = com.jnetdirect.jsql.JSQLDriver
-hibernate.connection.url = jdbc:JSQLConnect://CO3061835-A:1433
-
-
-## JTURBO Driver
-hibernate.connection.driver_class = com.newatlanta.jturbo.driver.Driver
-hibernate.connection.url = jdbc:JTurbo://CO3061835-A:1433/master
-
-
-## WebLogic Driver
-hibernate.connection.driver_class = weblogic.jdbc.mssqlserver4.Driver
-hibernate.connection.url = jdbc:weblogic:mssqlserver4:CO3061835-A:1433
-
-
-## Microsoft Driver (not supported!)
-hibernate.connection.driver_class = com.microsoft.jdbc.sqlserver.SQLServerDriver
-hibernate.connection.url = jdbc:microsoft:sqlserver://CO3061835-A:1433;SelectMethod=cursor
-
-
-## Interbase
-hibernate.dialect = net.sf.hibernate.dialect.InterbaseDialect
-hibernate.connection.username = sysdba
-hibernate.connection.password = masterkey
-
-## DO NOT specify hibernate.connection.sqlDialect
-
-
-## InterClient
-hibernate.connection.driver_class = interbase.interclient.Driver
-hibernate.connection.url = jdbc:interbase://localhost:3060/C:/firebird/test.gdb
-
-
-## Pure Java
-hibernate.connection.driver_class = org.firebirdsql.jdbc.FBDriver
-hibernate.connection.url = jdbc:firebirdsql:localhost/3050:/firebird/test.gdb
-
-
-## Pointbase
-hibernate.dialect = net.sf.hibernate.dialect.PointbaseDialect
-hibernate.connection.driver_class = com.pointbase.jdbc.jdbcUniversalDriver
-hibernate.connection.url = jdbc:pointbase:embedded:sample
-hibernate.connection.username = PBPUBLIC
-hibernate.connection.password = PBPUBLIC
diff --git a/deploy-demo.sh b/deploy-demo.sh
deleted file mode 100644
index f01097cb..00000000
--- a/deploy-demo.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-# default Struts version
-ant remove install -Dtomcat.server=drevil -Dhttp.port=80
-#ant test-canoo -Dtomcat.server=drevil
-# Spring + iBATIS
-rm -r ../appfuse-spring
-ant new -Dapp.name=appfuse-spring -Ddb.name=ibatis
-cd ../appfuse-spring
-ant install-ibatis install-springmvc
-cd extras/ibatis
-ant uninstall-hibernate
-cd ../..
-ant clean remove install -Dtomcat.server=drevil -Dhttp.port=80
-#ant test-canoo -Dtomcat.server=drevil
-# WebWork + Spring + Hibernate
-rm -r ../appfuse-webwork
-ant new -Dapp.name=appfuse-webwork -Ddb.name=webwork
-cd ../appfuse-webwork
-ant install-webwork
-ant clean remove install -Dtomcat.server=drevil -Dhttp.port=80
-#ant test-canoo -Dtomcat.server=drevil
-# Deploy Javadocs
-cd ~/appfuse
-ant javadoc
-cd build/docs/api
-jar cvf api.jar *
-scp api.jar raible@raibledesigns.com:~/.
-ssh raible@raibledesigns.com
-cd public_html/downloads/appfuse/api/.
-rm -r *
-mv ~/api.jar .
-jar xvf api.jar
-rm api.jar
-exit
\ No newline at end of file
diff --git a/docs/.cvsignore b/docs/.cvsignore
deleted file mode 100644
index 7e84c939..00000000
--- a/docs/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-style.css
-wiki.html
diff --git a/extras/appgen/.cvsignore b/extras/appgen/.cvsignore
deleted file mode 100644
index f628f004..00000000
--- a/extras/appgen/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-build
-*.sql
-*.log
diff --git a/extras/appgen/README.txt b/extras/appgen/README.txt
deleted file mode 100644
index ac47dde1..00000000
--- a/extras/appgen/README.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-This tool was based on contributions from Lance Lavandowska and Ben Gill.
-At first, I didn't want to add a code-generation feature like this b/c you'd
-end up with a 1-to-1 relationship between tables/pojos, DAOs and Managers.
-On most of my projects, I have far fewer DAOs and Managers than POJOs.
-
-By default, AppGen will generate only Actions/Controllers, Action/Controller
-Tests, test data, i18n keys and JSPs. It will also configure Actions/Controllers
-for you. It uses the generic BaseManager and BaseDAOHibernate classes
-(configured as "manager" and "dao") to reduce the number of files that are
-generated. However, I realize that sometimes you will want to generate all the
-DAO and Manager classes (as well as their tests), so I've added that option too.
-
-To use the AppGen tool (after installing your web framework), perform the
-following steps:
-
-1. Create your POJO (in the model directory) and configure the mapping file in
- applicationContext-hibernate.xml.
-2. cd into the extras/appgen directory and run "ant -Dmodel.name=Person
- -Dmodel.name.lowercase=person". In this example, the Person class should
- exist in your "model" package. This generates all the files you create to
- test and perform CRUD on an object.
-3. To install the generated files, run "ant install". You can run "ant install
- -Dmodel.name=Person -Dmodel.name.lowercase=person" if you want to do
- everything in one fell swoop.
-
- WARNING: You might want to backup your project before you do this - or at
- least make sure it's checked into a source code repository. I've tested this
- code, and I think it works well - but it *is* modifying your source tree for
- you.
-
-The reason for the "lowercase" parameter is to rename the JSPs to begin with a
-lowercase letter. If I tried to rename them and change the filename
-programmatically, it took 1MB worth of BSF and Rhino JARs (+5 lines of code)
-and this just seemed easier.
-
-Speaking of JSPs - it's up to you to modify the *Form.jsp and make it look
-pretty. This is covered in Step 5 of each respective web framework's
-"Create Action/Controller" tutorial.
-
-NOTE: If you'd like to generate all the DAOs/Managers/Tests,
-run "ant install-detailed" instead of "ant install". Before you install
-anything, the files will be created in the extras/appgen/build/gen directory
-(in case you want to look at them before installing). If you just want to test
-the tool, you can cd to this directory and run "ant test" to see the
-contents of these tutorials created.
-
-I encourage you to read the tutorials even if you decide to generate all your
-code. That way you'll understand what's being generated for you and you'll
-only need to mailing list for asking smart questions. ;-) Hopefully this tool
-will remove the pain of writing simple CRUD code and let you concentrate on
-developing your business logic and fancy UIs!
-
-For an updated version of this README, look in your docs directory, run "ant
-wiki" or just go to the following URL:
-
-http://raibledesigns.com/wiki/Wiki.jsp?page=CreateDAO#appgen
\ No newline at end of file
diff --git a/extras/appgen/build.xml b/extras/appgen/build.xml
deleted file mode 100644
index 983b43e6..00000000
--- a/extras/appgen/build.xml
+++ /dev/null
@@ -1,352 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- You must specify a POJO using -Dmodel.name=Class and the lowercase
- name using -Dmodel.name.lowercase=class (for naming JSPs)
-
-
- You must specify a POJO lowercase name using
- -Dmodel.name.lowercase=class (for naming JSPs)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copying all .java files into main project, overwrite="${overwrite}"
-
-
-
-
-
-
-
-
- Adding beans to Spring config files
-
-
-
- ]]>
-
-
-
-
-
-
- ]]>
-
-
-
-
-
-
- Copying Bean and Test into main project, overwrite="${overwrite}"
-
-
-
-
-
-
-
-
-
- Merging constant values into Constants.java
-
-
-
- }
-
-
-
- Merging sample-data into metadata/sql/sample-data.xml
-
-
-
- ]]>
-
-
- Merging web-tests into test/web/web-tests.xml
-
-
-
- ]]>
-
-
-
-
-
-
-
- Adding keys to ApplicationResources_en.properties
-
-
-
-
-
-
-
- Adding links to menu
-
-
-
- ]]>
-
-
-
-
-
- ]]>
-
-
-
-
- Installation completed successfully!
-
-
-
- Installation completed successfully!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- org/appfuse/model/Role.hbm.xml]]>
- org/appfuse/model/Person.hbm.xml
- org/appfuse/model/Role.hbm.xml]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- org/appfuse/model/Role.hbm.xml]]>
- org/appfuse/model/Person.hbm.xml
- org/appfuse/model/Role.hbm.xml]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extras/appgen/src/ActionTest.xdt b/extras/appgen/src/ActionTest.xdt
deleted file mode 100644
index 66a28a0e..00000000
--- a/extras/appgen/src/ActionTest.xdt
+++ /dev/null
@@ -1,109 +0,0 @@
-package .webapp.action;
-
-import .Constants;
-import .webapp.form.Form;
-
-public class ActionTest extends BaseStrutsTestCase {
-
- public ActionTest(String name) {
- super(name);
- }
-
- public void testAdd() throws Exception {
- setRequestPathInfo("/save");
- addRequestParameter("method", "Save");
-
- Form Form = new Form();
- // set required fields
-
-
-
- Form.(Boolean.TRUE);
-
-
- Form.("");
-
-
- Form.(new Long(100));
-
-
- Form.(new Integer(100));
-
-
-
-
- request.setAttribute(Constants._KEY, Form);
-
- actionPerform();
-
- verifyForward("list");
- verifyNoActionErrors();
- }
-
- public void testSearch() {
- setRequestPathInfo("/s");
- addRequestParameter("method", "Search");
-
- actionPerform();
-
- verifyForward("list");
- assertNotNull(request.getAttribute(Constants._LIST));
- verifyNoActionErrors();
- }
-
- public void testEdit() throws Exception {
- setRequestPathInfo("/edit");
- addRequestParameter("method", "Edit");
- addRequestParameter("id", "1");
-
- actionPerform();
-
- verifyForward("edit");
- assertNotNull(request.getAttribute(Constants._KEY));
- verifyNoActionErrors();
- }
-
- public void testSave() throws Exception {
- setRequestPathInfo("/edit");
- addRequestParameter("method", "Edit");
- addRequestParameter("id", "1");
-
- actionPerform();
-
- Form Form =
- (Form) request.getAttribute(Constants._KEY);
- assertNotNull(Form);
-
- setRequestPathInfo("/save");
- addRequestParameter("method", "Save");
-
- // update the form's required string fields and add it back to the request
-
-
-
- Form.("");
-
-
-
-
- request.setAttribute(Constants._KEY, Form);
-
- actionPerform();
-
- verifyForward("edit");
- // verify success messages
- verifyActionMessages(new String[] {".updated"});
- verifyNoActionErrors();
- }
-
- public void testRemove() throws Exception {
- setRequestPathInfo("/edit");
- addRequestParameter("method", "Delete");
- addRequestParameter("id", "2");
-
- actionPerform();
-
- verifyForward("list");
- verifyNoActionErrors();
- }
-}
\ No newline at end of file
diff --git a/extras/appgen/src/Constants.xdt b/extras/appgen/src/Constants.xdt
deleted file mode 100644
index 8fc5a6f3..00000000
--- a/extras/appgen/src/Constants.xdt
+++ /dev/null
@@ -1,10 +0,0 @@
- /**
- * The request scope attribute that holds the form.
- */
- public static final String _KEY = "Form";
-
- /**
- * The request scope attribute that holds the list
- */
- public static final String _LIST = "List";
-}
\ No newline at end of file
diff --git a/extras/appgen/src/FormKeys.xdt b/extras/appgen/src/FormKeys.xdt
deleted file mode 100644
index 84b6d554..00000000
--- a/extras/appgen/src/FormKeys.xdt
+++ /dev/null
@@ -1,15 +0,0 @@
-
-# -- form --
-Form.=
-
-.added= has been added successfully.
-.updated= has been updated successfully.
-.deleted= has been deleted successfully.
-
-# -- list page --
-List.title= List
-List.heading=s
-
-# -- detail page --
-Detail.title= Detail
-Detail.heading= Information
\ No newline at end of file
diff --git a/extras/appgen/src/Form_jsp.xdt b/extras/appgen/src/Form_jsp.xdt
deleted file mode 100644
index ab5908c6..00000000
--- a/extras/appgen/src/Form_jsp.xdt
+++ /dev/null
@@ -1,48 +0,0 @@
-<%@ include file="/common/taglibs.jsp"%>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-">
diff --git a/extras/appgen/src/List_jsp.xdt b/extras/appgen/src/List_jsp.xdt
deleted file mode 100644
index f85d89d4..00000000
--- a/extras/appgen/src/List_jsp.xdt
+++ /dev/null
@@ -1,44 +0,0 @@
-<%@ include file="/common/taglibs.jsp"%>
-
-
-
-
-
- .html"/>'">
-
-
-
- '">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/extras/appgen/src/detailed/Action.xdt b/extras/appgen/src/detailed/Action.xdt
deleted file mode 100644
index cc23366d..00000000
--- a/extras/appgen/src/detailed/Action.xdt
+++ /dev/null
@@ -1,140 +0,0 @@
-package .webapp.action;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionMessage;
-import org.apache.struts.action.ActionMessages;
-
-import .Constants;
-import .;
-import .service.Manager;
-import .webapp.form.Form;
-
-/**
- * Action class to handle CRUD on a object
- *
- * @struts.action name="Form" path="/s" scope="request"
- * validate="false" parameter="method" input="mainMenu"
- * @struts.action name="Form" path="/edit" scope="request"
- * validate="false" parameter="method" input="list"
- * @struts.action name="Form" path="/save" scope="request"
- * validate="true" parameter="method" input="edit"
- *
- * @struts.action-forward name="edit" path="/WEB-INF/pages/Form.jsp"
- * @struts.action-forward name="list" path="/WEB-INF/pages/List.jsp"
- */
-public final class Action extends BaseAction {
-
- public ActionForward cancel(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- return search(mapping, form, request, response);
- }
-
- public ActionForward delete(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'delete' method");
- }
-
- ActionMessages messages = new ActionMessages();
- Form Form = (Form) form;
-
- // Exceptions are caught by ActionExceptionHandler
- Manager mgr = (Manager) getBean("Manager");
- mgr.remove(Form.getId());
-
- messages.add(ActionMessages.GLOBAL_MESSAGE,
- new ActionMessage(".deleted"));
-
- // save messages in session, so they'll survive the redirect
- saveMessages(request.getSession(), messages);
-
- return search(mapping, form, request, response);
- }
-
- public ActionForward edit(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'edit' method");
- }
-
- Form Form = (Form) form;
-
- // if an id is passed in, look up the user - otherwise
- // don't do anything - user is doing an add
- if (Form.getId() != null) {
- Manager mgr = (Manager) getBean("Manager");
- = mgr.get(Form.getId());
- Form = (Form) convert();
- updateFormBean(mapping, request, Form);
- }
-
- return mapping.findForward("edit");
- }
-
- public ActionForward save(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'save' method");
- }
-
- // Extract attributes and parameters we will need
- ActionMessages messages = new ActionMessages();
- Form Form = (Form) form;
- boolean isNew = ("".equals(Form.getId()) || Form.getId() == null);
-
- Manager mgr = (Manager) getBean("Manager");
- = () convert(Form);
- mgr.save();
-
- // add success messages
- if (isNew) {
- messages.add(ActionMessages.GLOBAL_MESSAGE,
- new ActionMessage(".added"));
-
- // save messages in session to survive a redirect
- saveMessages(request.getSession(), messages);
-
- return search(mapping, form, request, response);
- } else {
- messages.add(ActionMessages.GLOBAL_MESSAGE,
- new ActionMessage(".updated"));
- saveMessages(request, messages);
-
- return mapping.findForward("edit");
- }
- }
-
- public ActionForward search(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'search' method");
- }
-
- Manager mgr = (Manager) getBean("Manager");
- request.setAttribute(Constants._LIST, mgr.gets(null));
-
- return mapping.findForward("list");
- }
-
- public ActionForward unspecified(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- return search(mapping, form, request, response);
- }
-}
\ No newline at end of file
diff --git a/extras/appgen/src/detailed/DAO.xdt b/extras/appgen/src/detailed/DAO.xdt
deleted file mode 100644
index f5c29efd..00000000
--- a/extras/appgen/src/detailed/DAO.xdt
+++ /dev/null
@@ -1,37 +0,0 @@
-package .dao;
-
-import java.util.List;
-
-import .;
-
-public interface DAO extends DAO {
-
- /**
- * Retrieves all of the s
- */
- public List gets();
-
- /**
- * Gets 's information based on id. An
- * ObjectRetrievalFailureException Runtime Exception is thrown if
- * nothing is found.
- *
- * @param id the 's id
- * @return populated object
- */
- public get(final Long id);
-
- /**
- * Saves a 's information
- * @param the object to be saved
- * @return the persisted object
- */
- public void save();
-
- /**
- * Removes a from the database by id
- * @param id the 's id
- */
- public void remove(final Long id);
-}
-
diff --git a/extras/appgen/src/detailed/DAOHibernate.xdt b/extras/appgen/src/detailed/DAOHibernate.xdt
deleted file mode 100644
index 5d3d2567..00000000
--- a/extras/appgen/src/detailed/DAOHibernate.xdt
+++ /dev/null
@@ -1,47 +0,0 @@
-package .dao.hibernate;
-
-import java.util.List;
-
-import .;
-import .dao.DAO;
-
-import org.springframework.orm.ObjectRetrievalFailureException;
-
-public class DAOHibernate extends BaseDAOHibernate implements DAO {
-
- /**
- * @see .dao.DAO#gets(.)
- */
- public List gets() {
- // use the parameter to do futher filtering if you need to
- return getHibernateTemplate().find("from ");
- }
-
- /**
- * @see .dao.DAO#get(final Long id)
- */
- public get(final Long id) {
- = () getHibernateTemplate().get(.class, id);
-
- if ( == null) {
- log.warn("uh oh, with id '" + id + "' not found...");
- throw new ObjectRetrievalFailureException(.class, id);
- }
-
- return ;
- }
-
- /**
- * @see .dao.DAO#save()
- */
- public void save(final ) {
- getHibernateTemplate().saveOrUpdate();
- }
-
- /**
- * @see .dao.DAO#remove(final Long id)
- */
- public void remove(final Long id) {
- getHibernateTemplate().delete(get(id));
- }
-}
\ No newline at end of file
diff --git a/extras/appgen/src/detailed/DAOTest.xdt b/extras/appgen/src/detailed/DAOTest.xdt
deleted file mode 100644
index 36c107ab..00000000
--- a/extras/appgen/src/detailed/DAOTest.xdt
+++ /dev/null
@@ -1,116 +0,0 @@
-package .dao;
-
-import java.util.List;
-
-import .;
-import .dao.DAO;
-
-import org.springframework.orm.ObjectRetrievalFailureException;
-
-public class DAOTest extends BaseDAOTestCase {
- private Long Id = new Long(1);
- private = null;
- private DAO dao = null;
-
- protected void setUp() throws Exception {
- super.setUp();
- dao = (DAO) ctx.getBean("DAO");
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- dao = null;
- }
-
- public void testAdd() throws Exception {
- = new ();
-
- // set required fields
-
-
-
- .(Boolean.TRUE);
-
-
- .("");
-
-
- .(new Long(100));
-
-
- .(new Integer(100));
-
-
-
-
- dao.save();
-
- // verify a primary key was assigned
- assertNotNull(.getId());
-
- // (optional) verify set fields are same after save
- /*
-
-
-
- assertEquals(.(), Boolean.TRUE);
-
-
- assertEquals(.(), "");
-
-
- assertEquals(.(), new Long(100));
-
-
- assertEquals(.(), new Integer(100));
-
-
-
- */
- }
-
- public void testGet() throws Exception {
- = dao.get(Id);
- assertNotNull();
- }
-
- public void testGets() throws Exception {
- = new ();
- List results = dao.gets();
- assertTrue(results.size() > 0);
- }
-
- public void testSave() throws Exception {
- = dao.get(Id);
-
- // update required string fields
-
-
-
- .("");
-
-
-
-
- dao.save();
-
-
-
-
- assertEquals(.(), "");
-
-
-
- }
-
- public void testRemove() throws Exception {
- Long removeId = new Long(3);
- dao.remove(removeId);
- try {
- dao.get(removeId);
- fail(" found in database");
- } catch (ObjectRetrievalFailureException e) {
- assertNotNull(e.getMessage());
- }
- }
-}
\ No newline at end of file
diff --git a/extras/appgen/src/detailed/Manager.xdt b/extras/appgen/src/detailed/Manager.xdt
deleted file mode 100644
index 9dcea579..00000000
--- a/extras/appgen/src/detailed/Manager.xdt
+++ /dev/null
@@ -1,39 +0,0 @@
-package .service;
-
-import java.util.List;
-
-import .;
-import .dao.DAO;
-
-public interface Manager extends Manager {
-
- /**
- * Setter for DAO, convenient for unit testing
- */
- public void setDAO(DAO DAO);
-
- /**
- * Retrieves all of the s
- */
- public List gets();
-
- /**
- * Gets 's information based on id.
- * @param id the 's id
- * @return populated object
- */
- public get(final String id);
-
- /**
- * Saves a 's information
- * @param the object to be saved
- */
- public void save();
-
- /**
- * Removes a from the database by id
- * @param id the 's id
- */
- public void remove(final String id);
-}
-
diff --git a/extras/appgen/src/detailed/ManagerImpl.xdt b/extras/appgen/src/detailed/ManagerImpl.xdt
deleted file mode 100644
index 3ab3ed86..00000000
--- a/extras/appgen/src/detailed/ManagerImpl.xdt
+++ /dev/null
@@ -1,47 +0,0 @@
-package .service.impl;
-
-import java.util.List;
-
-import .;
-import .dao.DAO;
-import .service.Manager;
-
-public class ManagerImpl extends BaseManager implements Manager {
- private DAO dao;
-
- /**
- * Set the DAO for communication with the data layer.
- * @param dao
- */
- public void setDAO(DAO dao) {
- this.dao = dao;
- }
-
- /**
- * @see .service.Manager#gets(.)
- */
- public List gets(final ) {
- return dao.gets();
- }
-
- /**
- * @see .service.Manager#get(final String id)
- */
- public get(final String id) {
- return dao.get(new Long(id));
- }
-
- /**
- * @see .service.Manager#save()
- */
- public void save(final ) {
- dao.save();
- }
-
- /**
- * @see .service.Manager#remove(final Long id)
- */
- public void remove(final String id) {
- dao.remove(new Long(id));
- }
-}
\ No newline at end of file
diff --git a/extras/appgen/src/detailed/ManagerTest.xdt b/extras/appgen/src/detailed/ManagerTest.xdt
deleted file mode 100644
index 00f2bd56..00000000
--- a/extras/appgen/src/detailed/ManagerTest.xdt
+++ /dev/null
@@ -1,111 +0,0 @@
-package .service;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import .dao.DAO;
-import .;
-import .service.impl.ManagerImpl;
-
-import org.jmock.Mock;
-import org.springframework.orm.ObjectRetrievalFailureException;
-
-public class ManagerTest extends BaseManagerTestCase {
- private final String Id = "1";
- private Manager Manager = new ManagerImpl();
- private Mock DAO = null;
- private = null;
-
- protected void setUp() throws Exception {
- super.setUp();
- DAO = new Mock(DAO.class);
- Manager.setDAO((DAO) DAO.proxy());
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- Manager = null;
- }
-
- public void testGets() throws Exception {
- List results = new ArrayList();
- = new ();
- results.add();
-
- // set expected behavior on dao
- DAO.expects(once()).method("gets")
- .will(returnValue(results));
-
- List s = Manager.gets(null);
- assertTrue(s.size() == 1);
- DAO.verify();
- }
-
- public void testGet() throws Exception {
- // set expected behavior on dao
- DAO.expects(once()).method("get")
- .will(returnValue(new ()));
- = Manager.get(Id);
- assertTrue( != null);
- DAO.verify();
- }
-
- public void testSave() throws Exception {
- // set expected behavior on dao
- DAO.expects(once()).method("save")
- .with(same()).isVoid();
-
- Manager.save();
- DAO.verify();
- }
-
- public void testAddAndRemove() throws Exception {
- = new ();
-
- // set required fields
-
-
-
- .(Boolean.TRUE);
-
-
- .("");
-
-
- .(new Long(100));
-
-
- .(new Integer(100));
-
-
-
-
- // set expected behavior on dao
- DAO.expects(once()).method("save")
- .with(same()).isVoid();
- Manager.save();
- DAO.verify();
-
- // reset expectations
- DAO.reset();
-
- DAO.expects(once()).method("remove").with(eq(new Long(Id)));
- Manager.remove(Id);
- DAO.verify();
-
- // reset expectations
- DAO.reset();
- // remove
- Exception ex = new ObjectRetrievalFailureException(.class, .getId());
- DAO.expects(once()).method("remove").isVoid();
- DAO.expects(once()).method("get").will(throwException(ex));
- Manager.remove(Id);
- try {
- Manager.get(Id);
- fail(" with identifier '" + Id + "' found in database");
- } catch (ObjectRetrievalFailureException e) {
- assertNotNull(e.getMessage());
- }
- DAO.verify();
- }
-}
diff --git a/extras/appgen/src/detailed/context-hibernate.xdt b/extras/appgen/src/detailed/context-hibernate.xdt
deleted file mode 100644
index 4f17e433..00000000
--- a/extras/appgen/src/detailed/context-hibernate.xdt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/extras/appgen/src/detailed/context-service.xdt b/extras/appgen/src/detailed/context-service.xdt
deleted file mode 100644
index 349cdcb8..00000000
--- a/extras/appgen/src/detailed/context-service.xdt
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/extras/appgen/src/generic/Action.xdt b/extras/appgen/src/generic/Action.xdt
deleted file mode 100644
index a8cd7744..00000000
--- a/extras/appgen/src/generic/Action.xdt
+++ /dev/null
@@ -1,141 +0,0 @@
-package .webapp.action;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionMessage;
-import org.apache.struts.action.ActionMessages;
-
-import .Constants;
-import .;
-import .service.Manager;
-import .webapp.form.Form;
-
-/**
- * Action class to handle CRUD on a object
- *
- * @struts.action name="Form" path="/s" scope="request"
- * validate="false" parameter="method" input="mainMenu"
- * @struts.action name="Form" path="/edit" scope="request"
- * validate="false" parameter="method" input="list"
- * @struts.action name="Form" path="/save" scope="request"
- * validate="true" parameter="method" input="edit"
- *
- * @struts.action-forward name="edit" path="/WEB-INF/pages/Form.jsp"
- * @struts.action-forward name="list" path="/WEB-INF/pages/List.jsp"
- */
-public final class Action extends BaseAction {
-
- public ActionForward cancel(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- return search(mapping, form, request, response);
- }
-
- public ActionForward delete(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'delete' method");
- }
-
- ActionMessages messages = new ActionMessages();
- Form Form = (Form) form;
-
- // Exceptions are caught by ActionExceptionHandler
- Manager mgr = (Manager) getBean("manager");
- mgr.removeObject(.class, new Long(Form.getId()));
-
- messages.add(ActionMessages.GLOBAL_MESSAGE,
- new ActionMessage(".deleted"));
-
- // save messages in session, so they'll survive the redirect
- saveMessages(request.getSession(), messages);
-
- return search(mapping, form, request, response);
- }
-
- public ActionForward edit(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'edit' method");
- }
-
- Form Form = (Form) form;
-
- // if an id is passed in, look up the user - otherwise
- // don't do anything - user is doing an add
- if (Form.getId() != null) {
- Manager mgr = (Manager) getBean("manager");
- =
- () mgr.getObject(.class, new Long(Form.getId()));
- Form = (Form) convert();
- updateFormBean(mapping, request, Form);
- }
-
- return mapping.findForward("edit");
- }
-
- public ActionForward save(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'save' method");
- }
-
- // Extract attributes and parameters we will need
- ActionMessages messages = new ActionMessages();
- Form Form = (Form) form;
- boolean isNew = ("".equals(Form.getId()) || Form.getId() == null);
-
- Manager mgr = (Manager) getBean("manager");
- = () convert(Form);
- mgr.saveObject();
-
- // add success messages
- if (isNew) {
- messages.add(ActionMessages.GLOBAL_MESSAGE,
- new ActionMessage(".added"));
-
- // save messages in session to survive a redirect
- saveMessages(request.getSession(), messages);
-
- return search(mapping, form, request, response);
- } else {
- messages.add(ActionMessages.GLOBAL_MESSAGE,
- new ActionMessage(".updated"));
- saveMessages(request, messages);
-
- return mapping.findForward("edit");
- }
- }
-
- public ActionForward search(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Entering 'search' method");
- }
-
- Manager mgr = (Manager) getBean("manager");
- request.setAttribute(Constants._LIST, mgr.getObjects(.class));
-
- return mapping.findForward("list");
- }
-
- public ActionForward unspecified(ActionMapping mapping, ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- return search(mapping, form, request, response);
- }
-}
\ No newline at end of file
diff --git a/extras/appgen/src/menu-config.xdt b/extras/appgen/src/menu-config.xdt
deleted file mode 100644
index 2cc4a049..00000000
--- a/extras/appgen/src/menu-config.xdt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/extras/appgen/src/menu_jsp.xdt b/extras/appgen/src/menu_jsp.xdt
deleted file mode 100644
index b5c80e73..00000000
--- a/extras/appgen/src/menu_jsp.xdt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/extras/appgen/src/org/example/antbook/xdoclet/FormTagsHandler.java b/extras/appgen/src/org/example/antbook/xdoclet/FormTagsHandler.java
deleted file mode 100644
index c917782e..00000000
--- a/extras/appgen/src/org/example/antbook/xdoclet/FormTagsHandler.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package org.example.antbook.xdoclet;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.LinkedHashMap;
-
-import xdoclet.XDocletException;
-import xdoclet.tagshandler.AbstractProgramElementTagsHandler;
-import xdoclet.tagshandler.MethodTagsHandler;
-import xjavadoc.XClass;
-import xjavadoc.XMethod;
-import xjavadoc.XParameter;
-
-public class FormTagsHandler extends AbstractProgramElementTagsHandler {
- private String curFieldName;
- private final static List supportedTypes = new ArrayList();
- private boolean curFieldIsId = false;
-
- static {
- supportedTypes.add("java.lang.String");
- supportedTypes.add("java.lang.Integer");
- supportedTypes.add("int");
- supportedTypes.add("java.lang.Float");
- supportedTypes.add("float");
- supportedTypes.add("java.lang.Long");
- supportedTypes.add("long");
- supportedTypes.add("java.lang.Double");
- supportedTypes.add("double");
- supportedTypes.add("java.lang.Boolean");
- supportedTypes.add("boolean");
- supportedTypes.add("java.util.Date");
- }
-
- /**
- * Gets the package name for the parent of this Package.
- * @author Lance Lavandowska
- */
- public String parentPackageName() {
- String packageName = getCurrentPackage().getName();
- return packageName.substring(0, packageName.lastIndexOf("."));
- }
-
- /**
- * Iterates the body for each field of the current form requiring validation.
- *
- * @param template
- * @param attributes
- * @throws XDocletException
- */
- public void forAllFields(String template, Properties attributes) throws XDocletException {
- XClass clazz = getCurrentClass();
- Map setters = new LinkedHashMap(getFields(clazz));
-
- for (Iterator iterator = setters.keySet().iterator(); iterator.hasNext();) {
- curFieldName = (String) iterator.next();
-
- XMethod field = (XMethod) setters.get(curFieldName);
-
- //setCurrentMethod(field);
-
- XMethod getter = field.getAccessor();
- setCurrentMethod(getter);
- Properties pro = new Properties();
- pro.setProperty("tagName", "hibernate.id");
-
- if (hasTag(pro, FOR_METHOD)) {
- curFieldIsId = true;
- } else {
- curFieldIsId = false;
- }
-
- setCurrentMethod(field);
- generate(template);
- }
- }
-
- /**
- * This method is used to determine id fields - this is used in the view
- * pages to set the ids as hidden fields.
- *
- * @param template
- * @param attributes
- * @throws XDocletException
- */
- public void ifIsIdField(String template, Properties attributes)
- throws XDocletException {
- if (curFieldIsId) {
- generate(template);
- }
- }
-
- public void ifIsNotIdField(String template, Properties attributes)
- throws XDocletException {
- if (!curFieldIsId) {
- generate(template);
- }
- }
-
- /**
- * Returns the current fields name.
- *
- * @param props
- * @return
- */
- public String fieldName(Properties props) {
- return curFieldName;
- }
-
- /**
- * Name of the POJO in LowerCase.
- * @return
- */
- public String classNameLower() {
- String name = getCurrentClass().getName();
- return name.replace(name.charAt(0), Character.toLowerCase(name.charAt(0)));
- }
-
- public String className() {
- return getCurrentClass().getName();
- }
-
- /**
- * Name of the POJO in UPPERCASE, for usage in Constants.java.
- * @return
- */
- public String classNameUpper() {
- String name = getCurrentClass().getName();
- name.replace(name.charAt(0), Character.toLowerCase(name.charAt(0)));
- return name.toUpperCase();
- }
-
- public String fieldDescription(Properties props) {
- StringBuffer buffer = new StringBuffer();
- boolean nextUpper = false;
- for (int i = 0; i < curFieldName.length(); i++) {
- char c = curFieldName.charAt(i);
-
- if (i == 0) {
- buffer.append(Character.toUpperCase(c));
- continue;
- }
-
- if (Character.isUpperCase(c)) {
- buffer.append(' ');
- buffer.append(c);
- continue;
- }
-
- if (c == '.') {
- //buffer.append(" - ");
- buffer.delete(0, buffer.length());
- nextUpper = true;
- continue;
- }
-
- char x = nextUpper ? Character.toUpperCase(c) : c;
- buffer.append(x);
- nextUpper = false;
- }
-
- return buffer.toString();
- }
-
- private Map getFields(XClass clazz) throws XDocletException {
- return getFields(clazz, "");
- }
-
- private Map getFields(XClass clazz, String prefix) throws XDocletException {
- Map fields = new LinkedHashMap();
-
- Collection curFields = clazz.getMethods();
-
- for (Iterator iterator = curFields.iterator(); iterator.hasNext();) {
- XMethod setter = (XMethod) iterator.next();
-
- if (MethodTagsHandler.isSetterMethod(setter)) {
- String name = MethodTagsHandler.getPropertyNameFor(setter);
- XParameter param = (XParameter) setter.getParameters().iterator().next();
- String type = param.getType().getQualifiedName();
-
- if (supportedTypes.contains(type)) {
- fields.put(prefix + name, setter);
- } else {
- fields.putAll(getFields(param.getType(), prefix + (prefix.length() == 0 ? "" : ".") + name + "."));
- }
- }
- }
-
- return fields;
- }
-
-}
diff --git a/extras/appgen/src/org/example/antbook/xdoclet/MethodExTagsHandler.java b/extras/appgen/src/org/example/antbook/xdoclet/MethodExTagsHandler.java
deleted file mode 100644
index c2573c8d..00000000
--- a/extras/appgen/src/org/example/antbook/xdoclet/MethodExTagsHandler.java
+++ /dev/null
@@ -1,320 +0,0 @@
-package org.example.antbook.xdoclet;
-
-import java.sql.Timestamp;
-
-import java.text.*;
-import java.text.SimpleDateFormat;
-
-import java.util.*;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.TreeMap;
-
-import xdoclet.XDocletException;
-
-import xdoclet.tagshandler.*;
-import xdoclet.tagshandler.MethodTagsHandler;
-
-import xdoclet.util.TypeConversionUtil;
-
-import xjavadoc.*;
-import xjavadoc.XClass;
-import xjavadoc.XMember;
-import xjavadoc.XMethod;
-import xjavadoc.XParameter;
-import xjavadoc.XType;
-
-/**
- * This class is an extension to xdoclet.tagshandler.MethodTagsHandler with
- * extra features designed for appgen.
- *
- * @author hzhang(mb4henry@yahoo.com.au)
- *
- */
-public class MethodExTagsHandler extends MethodTagsHandler {
- //
- private static String datePattern = "yyyy-MM-dd";
- private static final List numericTypes = new ArrayList();
- private String rootClassName = "";
- private String curprefix = "";
-
- static {
- numericTypes.add("java.lang.Integer");
- numericTypes.add("int");
- numericTypes.add("java.lang.Float");
- numericTypes.add("float");
- numericTypes.add("java.lang.Long");
- numericTypes.add("long");
- numericTypes.add("java.lang.Double");
- numericTypes.add("double");
- numericTypes.add("java.lang.Short");
- numericTypes.add("short");
- numericTypes.add("java.lang.Byte");
- numericTypes.add("byte");
- }
-
- /**
- * Iterates over all methods of current class and evaluates the body of the
- * tag for each method.
- * The reason to override this method is to add nested form support when
- * iterating over all properties.
- *
- * @see xdoclet.tagshandler.MethodTagsHandler#forAllMethods(java.lang.String,
- * java.util.Properties)
- */
- public void forAllMethods(String template, Properties attributes)
- throws XDocletException {
- XClass currentClass = getCurrentClass();
- rootClassName = currentClass.getName();
-
- char c = rootClassName.charAt(0);
- c = Character.toLowerCase(c);
- rootClassName = c + rootClassName.substring(1);
-
- if (currentClass == null) {
- throw new XDocletException("currentClass == null!!!");
- }
-
- forAllMembersEx(currentClass, template, attributes, FOR_METHOD, "");
- }
-
- /**
- * In appgen, The action test class need to set required fields. This method
- * is writen for that reason. This method will iterate through
- * sub-components to find all methods.
- *
- * @return @throws
- * XDocletException
- */
- public String nestedMethodName() throws XDocletException {
- XMethod method = super.getCurrentMethod();
- XMethod setter = method.getMutator();
-
- return rootClassName + "Form." + curprefix + setter.getName() + "(\"" +
- randomValue() + "\");";
- }
-
- /**
- * A convenient way to get information of an id field. You can get the
- * property name, property type, setter name, getter name. When using this
- * method, you can pass in a parameter call "getType". And its value can be
- * one of
- *
- *
propertyName
- *
propertyType
- *
getterName
- *
setterName
- *
- * default will return property name.
- *
- * @param attributes
- * @return required information related to id field in the model class
- * @throws XDocletException
- */
- public String idField(Properties attributes) throws XDocletException {
- XClass currentClass = getCurrentClass();
- Collection members = null;
- members = currentClass.getMethods(false);
-
- String result = "";
-
- for (Iterator j = members.iterator(); j.hasNext();) {
- XMember member = (XMember) j.next();
- setCurrentMethod((XMethod) member);
-
- XMethod getter = (XMethod) member;
-
- if (super.isGetterMethod(getter)) {
- Properties pro = new Properties();
- pro.setProperty("tagName", "hibernate.id");
-
- if (super.hasTag(pro, FOR_METHOD)) {
- break;
- }
-
- setCurrentClass(member.getContainingClass());
- }
- }
-
- String type = attributes.getProperty("getType");
- XMethod getter = super.getCurrentMethod();
-
- if ("propertyName".equals(type)) {
- result = getter.getPropertyName();
- } else if ("getterName".equals(type)) {
- result = getter.getName();
- } else if ("setterName".equals(type)) {
- result = getter.getMutator().getName();
- } else if ("propertyType".equals(type)) {
- result = getter.getPropertyType().getType().getQualifiedName();
- } else {
- result = getter.getPropertyName();
- }
-
- return result;
- }
-
- /**
- * @see xdoclet.tagshandler.MethodTagsHandler#forAllMembers
- * @param currentClass
- * @param template
- * @param attributes
- * @param forType
- * @param prefix
- * @throws XDocletException
- */
- protected void forAllMembersEx(XClass currentClass, String template,
- Properties attributes, int forType,
- String prefix) throws XDocletException {
- boolean superclasses =
- TypeConversionUtil.stringToBoolean(attributes.getProperty("superclasses"),
- true);
- boolean sort =
- TypeConversionUtil.stringToBoolean(attributes.getProperty("sort"),
- true);
-
- Collection members = null;
-
- switch (forType) {
- case FOR_METHOD:
- members = currentClass.getMethods(superclasses);
-
- break;
-
- default:
- throw new XDocletException("Bad type: " + forType);
- }
-
- if (sort) {
- // sort fields, but we should make a copy first, because members is
- // not a new copy, it's shared by all
- List sortedMembers = new ArrayList(members);
-
- members = sortedMembers;
- }
-
- for (Iterator j = members.iterator(); j.hasNext();) {
- XMember member = (XMember) j.next();
-
- switch (forType) {
- case FOR_METHOD:
- setCurrentMethod((XMethod) member);
-
- break;
-
- default:
- throw new XDocletException("Bad type: " + forType);
- }
-
- XMethod getter = (XMethod) member;
-
- if (super.isGetterMethod(getter)) {
- Properties pro = new Properties();
-
- //iterate through sub-components only
- pro.setProperty("tagName", "hibernate.component");
-
- if (super.hasTag(pro, FOR_METHOD)) {
- Type type = getter.getReturnType();
- String temp =
- prefix +
- ("get" + type.getType().getName() + "Form().");
- forAllMembersEx(type.getType(), template, attributes,
- forType, temp);
- }
-
- setCurrentClass(member.getContainingClass());
- curprefix = prefix;
- generate(template);
- }
- }
-
- setCurrentClass(currentClass);
- }
-
- public String className() {
- return getCurrentClass().getName();
- }
-
- /**
- * Generates a random value for a field. Return "0" for boolean type. used
- * to generate random values for sample-data.xml
- *
- * @return a random value
- * @throws XDocletException
- */
- public String randomValue() throws XDocletException {
- Properties pros = new Properties();
- pros.put("type", "content");
-
- String mtype = super.methodType(pros);
-
- if (numericTypes.contains(mtype)) {
- return (int) ((Math.random() * 1000) + 1) + "";
- } else if ("java.lang.Boolean".equals(mtype) ||
- "boolean".equals(mtype)) {
- return "0";
- } else if ("java.util.Date".equals(mtype)) {
- return getDate(new Date());
- } else if ("java.sql.Timestamp".equals(mtype)) {
- return new Timestamp(new Date().getTime()).toString();
- } else if ("email".equalsIgnoreCase(super.propertyName())) {
- return super.propertyName() + (int) ((Math.random() * 1000) + 1) +
- "@dev.java.net";
- } else {
- return super.propertyName() + (int) ((Math.random() * 1000) + 1);
- }
- }
-
- /**
- * Generates a random value for a field. Return "true" for boolean type
- *
- * @return a random value
- * @throws XDocletException
- */
- public String randomValue2() throws XDocletException {
- Properties pros = new Properties();
- pros.put("type", "content");
-
- String mtype = super.methodType(pros);
-
- if (numericTypes.contains(mtype)) {
- return (int) ((Math.random() * 1000) + 1) + "";
- } else if ("java.lang.Boolean".equals(mtype) ||
- "boolean".equals(mtype)) {
- return "true";
- } else if ("java.util.Date".equals(mtype)) {
- return getDate(new Date());
- } else if ("java.sql.Timestamp".equals(mtype)) {
- return new Timestamp(new Date().getTime()).toString();
- } else if ("email".equalsIgnoreCase(super.propertyName())) {
- return super.propertyName() + (int) ((Math.random() * 1000) + 1) +
- "@appfuse.dev.java.net";
- } else {
- return super.propertyName() + (int) ((Math.random() * 1000) + 1);
- }
- }
-
- /**
- * copy from org.appfuse.util.DateUtil
- *
- * @param aDate
- * @return
- */
- private static final String getDate(Date aDate) {
- SimpleDateFormat df = null;
- String returnValue = "";
-
- if (aDate != null) {
- df = new SimpleDateFormat(datePattern);
- returnValue = df.format(aDate);
- }
-
- return (returnValue);
- }
-}
diff --git a/extras/appgen/src/sample-data.xdt b/extras/appgen/src/sample-data.xdt
deleted file mode 100644
index 5134b2da..00000000
--- a/extras/appgen/src/sample-data.xdt
+++ /dev/null
@@ -1,71 +0,0 @@
-