You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/06/09 05:19:20 UTC
svn commit: r189695 [2/67] - in /incubator/roller/trunk: ./ contrib/
contrib/lib/ contrib/plugins/ contrib/plugins/src/ contrib/plugins/src/org/
contrib/plugins/src/org/roller/ contrib/plugins/src/org/roller/presentation/
contrib/plugins/src/org/roller/presentation/velocity/
contrib/plugins/src/org/roller/presentation/velocity/plugins/
contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/
contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/
contrib/plugins/src/org/roller/presentation/velocity/plugins/email/
contrib/plugins/src/org/roller/presentation/velocity/plugins/jspwiki/
contrib/plugins/src/org/roller/presentation/velocity/plugins/radeox/
contrib/plugins/src/org/roller/presentation/velocity/plugins/readmore/
contrib/plugins/src/org/roller/presentation/velocity/plugins/smileys/
contrib/plugins/src/org/roller/presentation/velocity/plugins/textile/
contrib/plugins/src/org/roller/presentation/velocity/plugins/topictag/
custom/ custom/src/ custom/web/ docs/ docs/images/ docs/installguide/
docs/installguide/old/ docs/userguide/ docs/userguide/images/
docs/userguide/old/ metadata/ metadata/database/
metadata/database/hibernate/ metadata/xdoclet/ nbproject/ personal/
personal/eclipse/ personal/testing/ sandbox/ sandbox/planetroller/
sandbox/planetroller/metadata/ sandbox/planetroller/metadata/database/
sandbox/planetroller/src/ sandbox/planetroller/src/org/
sandbox/planetroller/src/org/roller/
sandbox/planetroller/src/org/roller/tools/
sandbox/planetroller/src/org/roller/tools/planet/
sandbox/planetroller/templates/ sandbox/planetroller/test/
sandbox/planetroller/test/org/ sandbox/planetroller/test/org/roller/
sandbox/planetroller/test/org/roller/model/
sandbox/planetroller/test/org/roller/tools/
sandbox/planetroller/test/org/roller/tools/planet/
sandbox/planetroller/testdata/ sandbox/planetroller/testdata/cache/
sandbox/planetroller/testdata/output/ sandbox/standalone/
sandbox/standalone/jspwiki/ sandbox/standalone/jspwiki/default/
sandbox/standalone/jspwiki/default/images/ sandbox/standalone/lib/
sandbox/standalone/src/ sandbox/standalone/src/org/
sandbox/standalone/src/org/roller/ sandbox/standalone/src/org/roller/jspwiki/
sandbox/standalone/src/org/roller/tomcat/
sandbox/standalone/src/org/roller/util/ sandbox/standalone/tests/
sandbox/standalone/tests/org/ sandbox/standalone/tests/org/roller/
sandbox/standalone/tests/org/roller/util/ sandbox/standalone/tomcat/ src/
src/org/ src/org/roller/ src/org/roller/business/
src/org/roller/business/hibernate/ src/org/roller/business/search/
src/org/roller/business/search/operations/ src/org/roller/business/utils/
src/org/roller/config/ src/org/roller/config/runtime/ src/org/roller/model/
src/org/roller/pojos/ src/org/roller/presentation/
src/org/roller/presentation/atomapi/ src/org/roller/presentation/bookmarks/
src/org/roller/presentation/bookmarks/actions/
src/org/roller/presentation/bookmarks/formbeans/
src/org/roller/presentation/bookmarks/tags/
src/org/roller/presentation/filters/ src/org/roller/presentation/forms/
src/org/roller/presentation/newsfeeds/ src/org/roller/presentation/pagecache/
src/org/roller/presentation/pagecache/rollercache/
src/org/roller/presentation/pings/ src/org/roller/presentation/planet/
src/org/roller/presentation/tags/ src/org/roller/presentation/tags/calendar/
src/org/roller/presentation/tags/menu/ src/org/roller/presentation/util/
src/org/roller/presentation/velocity/ src/org/roller/presentation/weblog/
src/org/roller/presentation/weblog/actions/
src/org/roller/presentation/weblog/formbeans/
src/org/roller/presentation/weblog/tags/ src/org/roller/presentation/website/
src/org/roller/presentation/website/actions/
src/org/roller/presentation/website/formbeans/
src/org/roller/presentation/website/tags/
src/org/roller/presentation/xmlrpc/ src/org/roller/util/
src/org/roller/util/rome/ tests/ tests/org/ tests/org/roller/
tests/org/roller/ant/ tests/org/roller/business/
tests/org/roller/presentation/ tests/org/roller/presentation/atomapi/
tests/org/roller/presentation/bookmarks/
tests/org/roller/presentation/filters/
tests/org/roller/presentation/velocity/
tests/org/roller/presentation/velocity/plugins/
tests/org/roller/presentation/velocity/plugins/smileys/
tests/org/roller/presentation/velocity/plugins/textile/
tests/org/roller/presentation/weblog/ tests/org/roller/presentation/xmlrpc/
tests/org/roller/util/ tests/org/roller/util/rome/ tools/ tools/buildtime/
tools/buildtime/ant-1.6.2/ tools/buildtime/findbugs/
tools/buildtime/findbugs/lib/ tools/buildtime/findbugs/plugin/
tools/buildtime/mockrunner-0.3/ tools/buildtime/mockrunner-0.3/lib/
tools/buildtime/mockrunner-0.35/ tools/buildtime/mockrunner-0.35/lib/
tools/buildtime/tomcat-4.1.24/ tools/buildtime/xdoclet-1.2/
tools/buildtime/xdoclet-1.2/lib/ tools/hibernate-2.1/
tools/hibernate-2.1/lib/ tools/lib/ tools/standard-1.0.3/
tools/standard-1.0.3/lib/ tools/standard-1.0.3/tld/ tools/struts-1.2.4/
tools/struts-1.2.4/lib/ web/ web/WEB-INF/ web/WEB-INF/classes/
web/WEB-INF/classes/flavors/ web/WEB-INF/classes/themes/ web/bookmarks/
web/editor/ web/editor/images/ web/images/ web/images/editor/
web/images/midas/ web/images/preview/ web/images/smileys/ web/planet/
web/tags/ web/templates/ web/theme/ web/theme/images/ web/theme/lavender/
web/theme/scripts/ web/theme/scripts/classes/ web/themes/ web/themes/basic/
web/themes/berkley/ web/themes/berkley/images/ web/themes/brushedmetal/
web/themes/brushedmetal/images/ web/themes/cheb/ web/themes/cheb/images/
web/themes/cheb/scripts/ web/themes/clean/ web/themes/currency-i18n/
web/themes/currency-i18n/images/ web/themes/currency/
web/themes/currency/images/ web/themes/grey2/ web/themes/moonshine/
web/themes/movablemanila/ web/themes/movablemanila/images/
web/themes/pacifica/ web/themes/robot/ web/themes/rolling/
web/themes/rolling/images/ web/themes/sotto/ web/themes/sotto/images/
web/themes/sotto/styles/ web/themes/sunsets/ web/themes/sunsets/images/
web/themes/sunsets/scripts/ web/themes/sunsets/styles/ web/themes/werner/
web/themes/x2/ web/themes/x2/images/ web/themes/x2/scripts/
web/themes/x2/styles/ web/weblog/ web/website/
Added: incubator/roller/trunk/CHANGES.txt
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/CHANGES.txt?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/CHANGES.txt (added)
+++ incubator/roller/trunk/CHANGES.txt Wed Jun 8 20:18:46 2005
@@ -0,0 +1,437 @@
+
+ROLLER CHANGE LOG
+-----------------
+This release includes basic support for Podcasting, bug fixes and minor improvements.
+A new aggregator front page (known as Planet Roller) has been added to Roller, but
+it is an unsupported feature available only via Roller's custom build mechanism.
+
+ New Features
+ * [ROL-711] - Support Podcasting
+ * [ROL-596] - Aggregator front page (unsupported: only in custom builds)
+
+ Bugs
+ * [ROL-405] - getConfigPath() in RollerContext doesn't handle SecurityException
+ * [ROL-433] - Bookmarks, Import of OPML file fails on trying to insert null.
+ * [ROL-464] - Error changing name of folder
+ * [ROL-529] - read more summary plugins can't support chinese title
+ * [ROL-649] - Email notification may not send notifications with bad addresses
+ * [ROL-650] - Email privacy issues in comment notification
+ * [ROL-651] - Notification emails don't use the correct website URL
+ * [ROL-652] - Notification emails contain unnecessary information for commenter
+ * [ROL-655] - Bookmark linker plugin is overly agressive
+ * [ROL-665] - Broken themes on Tomcat 5.5.7
+ * [ROL-677] - CloseSessionFilter not always called for login.jsp
+ * [ROL-689] - Rolling theme in theme selectors - preview fails to return
+ * [ROL-695] - Can't save anything in an empty db or empty website
+ * [ROL-700] - Exception on RollerSession passivation
+ * [ROL-701] - Rolling theme includes don't show up in preview
+ * [ROL-710] - MetaWeblog API: permalinks should not be relative
+
+ Improvements
+ * [ROL-530] - Child categories should be in a parent categories feed
+ * [ROL-604] - Add MS SqlServer support to Roller
+ * [ROL-615] - Lift 100 entry limit in MetaWelog API
+ * [ROL-632] - UserCookieData lacks equals() and hashcode()
+ * [ROL-669] - Main page should include auto-disco link
+ * [ROL-679] - Externalize configuration of Hibernate
+
+
+1.0.1 Bug Fix Releasee
+
+Fixes minor bugs in Roller 1.0 and adds support for rel="nofollow"
+
+ Bug
+ * [ROL-621] - Twisty Comments broken in 1.0
+ * [ROL-623] - Unexpanded type macros in 097-098 upgrade script for mysql
+ * [ROL-625] - Remember Me doesn't work in 1.0 and Firefox
+ * [ROL-628] - Flawed SQL clause for moving users in 097-to-098-upgrade script.
+ * [ROL-631] - Blacklist update task doesn't catch all exceptions
+ * [ROL-640] - Search page reports incorrect (high) counts
+ * [ROL-641] - CommentsServlet *throws* an NPE if it can't find a weblog entry
+ * [ROL-647] - Unclosed link tag causes StringIndexOutOfBoundsException if
+ using Textile and ReadMore plugins
+
+ New Feature
+ * [ROL-627] - rel="nofollow" for referrers, trackbacks, and comments
+
+ Improvement
+ * [ROL-642] - cheb theme requires a minor adjustment to fix font color problem on the menu
+ * [ROL-643] - Add Icelandic application resources
+
+
+1.0 FINAL
+
+Fixes minor found in Roller 1.0 RC2.
+
+ * [ROL-538] - Remember Me seems to be broken
+ * [ROL-554] - Norwegian and Danish characters are corrupted
+ * [ROL-560] - Weblog Edit page problems with some browsers
+ * [ROL-565] - File upload creates bogus directory
+ * [ROL-572] - User admin page glitches
+ * [ROL-574] - Site wide RSS feed is your own if you are logged in
+ * [ROL-575] - Confusing instructions -- Replace "&" by "&"
+ * [ROL-576] - Email notification is not working
+ * [ROL-577] - Missing and Unexpected jars in lib
+ * [ROL-578] - Captcha requiring duplicate gimpybackgrounds directory
+ * [ROL-581] - Warning navigating to Website tab
+ * [ROL-583] - Double defined listeners
+ * [ROL-585] - Restore old themes
+ * [ROL-586] - Edit folder fails with exception
+ * [ROL-590] - "Read More" plugin should ignore HTML tags
+ * [ROL-603] - roller.log file created in startup directory
+ * [ROL-612] - blacklist.txt file getting written to /
+ * [ROL-501] - Allow commenters to opt-in to email notification of comments
+ * [ROL-558] - Resources should not be browsable
+
+--------------------------------------------------------------------------------
+
+1.0RC2: 2nd Release Candidate for Roller 1.0
+
+ [ROL-338] - Delete-user blows up on PostgreSQL
+ [ROL-508] - I18N problems in sending a trackback
+ [ROL-509] - Errors in PostgreSQL migration script for 0.98 to 1.0
+ [ROL-512] - Recent Drafts list in Weblog editor does not show future posts
+ [ROL-516] - properties.xmlf missing from src release
+ [ROL-522] - RSS feed pubDate does not indicate AM/PM
+ [ROL-523] - org.apache.jasper.JasperException: /taglibs.jsp(0,0) problem
+ [ROL-524] - rollerpw.sh utility won't work with PostgreSQL
+ [ROL-525] - Attempt to disable Blogger API raises exception
+ [ROL-532] - no rollback on exception when deleting user
+ [ROL-535] - Velocity context not properly populated on CommentServlet.doPost()
+ [ROL-539] - Correct comments path in #showHiddenCommentsForm()
+ [ROL-542] - XML-RPC deletePost not working
+ [ROL-544] - Exception on following link after comment submission
+ [ROL-548] - Bookmark display macro not obeying sort order
+ [ROL-550] - Checkbox for e-mail on comments appears even if e-mail is centrally disabled
+ [ROL-551] - Toggle linkback throws exception
+ [ROL-477] - Pluggable authentication mechanism for comments (with JCaptcha option)
+ [ROL-507] - Redundant numerical character references in RSS feed
+
+--------------------------------------------------------------------------------
+1.0RC1: 1st Release Candidate for Roller 1.0
+
+The major new features of Roller 0.9.9 are a new Editor UI, hierarchical
+categories, hierarchical bookmark/blogroll folders with OPML import/export,
+Atom API support, Atom newsfeed support, a new look-and-feel in the Web
+interface, lots of other features, and numerous bug fixes.
+
+This is the fifth release in the Roller 0.9.9 branch. The first release
+was deployed on JRoller in May. Since then many bug fixes and architectural
+improvements have been made, including:
+
+ ROL-199 FIXED Referential integrity failure deleting bookmark folder
+ ROL-60 FIXED Encrypt passwords in the DB
+ ROL-294 FIXED Add a #showWeblogEntriesForCategory(catname) macro.
+ ROL-293 FIXED add macro to display all bookmarks without specifying category
+ ROL-292 FIXED BoggerAPIHandler shows password in plain text
+ ROL-229 FIXED Customizable Calendar?
+ ROL-359 FIXED CVS Create-db.sql fails on postgresql
+ ROL-310 FIXED Deleting entry should also delete referrers and comments
+ ROL-271 FIXED Description field should be encoded or CDATA-ified
+ ROL-325 FIXED Don't allow delete of last category
+ ROL-318 FIXED Don't count referrers from own blog
+ ROL-303 FIXED Hierarchical Categories
+ ROL-357 FIXED Improve Calendar/archive navigation
+ ROL-321 FIXED Improve wiki syntax handling in RSS feeds
+ ROL-273 FIXED Installation instructions need to include mention of mail.jar
+ ROL-306 FIXED Linkback enable link does not work
+ ROL-147 FIXED Nesting bookmark folders
+ ROL-275 FIXED Newpost in bloggerapi always tries to ping rpc.weblogs.com
+ ROL-274 FIXED Postgres expects boolean value in queries, not '1'
+ ROL-299 FIXED Recent entries preview doesn't use _entry page
+ ROL-289 FIXED Referrer filter not working
+ ROL-298 FIXED RSS feeds do not support HTTP Conditional GET or Gzip encoding
+ ROL-282 FIXED roller-index location should be configurable
+ ROL-308 FIXED Search should list findings in reverse chrono order
+ ROL-307 FIXED Todays page hits count inaccurate
+ ROL-279 FIXED User management page needs improvement.
+ ROL-231 FIXED view of weblog fails
+ ROL-311 FIXED Want to browse previous and next article
+ ROL-339 FIXED Weblog calendar not showing all entries
+ ROL-347 FIXED Where did sign-up link in the main page
+ ROL-326 FIXED Allow for mime-type override on pages
+ ROL-233 FIXED Add timezone setting to Website::Settings
+ ROL-13 FIXED Front page improvements
+ ROL-297 FIXED Include <guid> elements in default RSS feeds
+ ROL-235 FIXED Localized SimpleDateFormat fouls up calendar weblog title
+ ROL-224 FIXED Lucene Search Should Display Summary
+ ROL-142 FIXED Make RollerConfig use database tables rather than xml file.
+ ROL-168 FIXED Obfuscate email addresses in Comments (and elsewhere?)
+ ROL-18 FIXED OPML export of bookmarks
+ ROL-268 FIXED postgres features
+ ROL-225 FIXED RSS import from other blogs
+ ROL-288 FIXED Search function should also search the titles
+ ROL-315 FIXED Send trackback doesn't strip HTML from wiki entries
+ ROL-290 FIXED Some admin config options are never persisted
+ ROL-286 FIXED Use ResultSet.next() instead of ResultSet.first()
+ ROL-312 FIXED Add basic FOAF support from current data
+ ROL-201 FIXED Sample Apache JkMounts for mod-jk
+ ROL-105 FIXED User can delete Referrers
+
+--------------------------------------------------------------------------------
+0.9.8.2: Bug fix release
+
+ Includes a couple of I18N fixes.
+
+--------------------------------------------------------------------------------
+0.9.8.1: Bug fix release
+
+ ROL-252 FIXED Wrong comments link in RSS
+ ROL-241 FIXED xml feed uses dc:date instead of pubDate
+ ROL-258 FIXED Enable comments by default for new blogs
+ ROL-251 FIXED Roller config changes should be immediately flushed
+ ROL-171 FIXED comments needs improvement, I get lots of double postings
+ ROL-249 FIXED Disabling comments doesn't disable the comment form on
+ the comment-form-in-page
+ ROL-246 FIXED Adding a page causes unhandled exception
+ ROL-232 FIXED   problems in RSS feed
+ ROL-212 FIXED Empty blog page
+ ROL-255 FIXED Theme won't change
+ ROL-216 FIXED Admin can't delete user.
+ ROL-242 FIXED Weblogs.com ping sends wrong URL
+ ROL-259 FIXED Get rid of the FIRST POST!
+ ROL-237 FIXED Preview Theme doesn't seem to be working
+ ROL-214 FIXED Category chooser for Currency theme
+ ROL-202 FIXED Error saving customizations to theme
+ ROL-238 FIXED Parameters intended for the 'edit website settings' are
+ being sent to the logout-redirect.jsp.
+ ROL-264 FIXED Ping Weblogs.com should be off by default in weblog editor
+ ROL-245 FIXED Mispelling
+
+--------------------------------------------------------------------------------
+0.9.8: Performance improvements and bug fixes
+
+Dramatic performance increase due to addition of database indices, proper
+use of persistence sessions, and new version of OSCache. New features include
+Weblog.com ping and integrated Lucene weblog search.
+
+ ROL-197 FIXED error inserting null into page.updatetime on register new user
+ ROL-196 FIXED Blogger/MetaBlog API operations flush entire cache
+ ROL-187 FIXED Some SQL friendly table and column renames
+ ROL-206 FIXED Comment links in site-wide RSS feed are wrong
+ ROL-160 FIXED Theme switcher workflow issues
+ ROL-172 FIXED index.jsp only contains Home | Login links
+ ROL-198 FIXED Support accented characters in RSS
+ ROL-208 FIXED Client-aborts should not be logged as errors
+ ROL-60 FIXED Encrypt passwords in the DB
+ ROL-189 FIXED Add macro to set content type of a page
+ ROL-180 FIXED Use relative URLs in HTML, make RSS URLs configurable
+ ROL-173 FIXED hsqldb migration script has syntax issues
+ ROL-179 FIXED Main page not updating list of updated blogs
+ ROL-183 FIXED Linkback extractor can't handle relative auto-discovery links
+ ROL-120 FIXED encoding type wrong (freeroller)
+ ROL-178 FIXED PageCache and RssCache filter timeouts cannot differ
+ ROL-100 FIXED Resin specific install guide
+ ROL-181 FIXED Ping weblogs.com when entry changed/entered
+ ROL-185 FIXED Test page doesn't close JDBC connection
+ ROL-215 FIXED Anchor links for Currency theme
+ ROL-209 FIXED Blogger API error messages reversed
+ ROL-184 FIXED SQL script improvements
+ ROL-207 FIXED Main page list of popular blogs should be smaller
+ ROL-205 FIXED dstest.jsp wont compile
+ ROL-200 FIXED Context XML file for Tomcat 4.1.x
+
+---------------------------------------------------------------------------------
+0.9.7.3: Bug fix release
+
+Fixes these bugs:
+
+ ROL-196 Blogger/MetaBlog API operations flush entire cache
+ ROL-193 Trackback URL display should use absolute URL
+ ROL-192 LinkbackExtract should mind absolute URL config
+
+---------------------------------------------------------------------------------
+0.9.7.2: Bug fix release
+
+Fixes these bugs:
+
+ ROL-179 Main page not updating list of updated blogs
+ ROL-183 Linkback extractor can't handle relative
+ auto-discovery links
+ ROL-180 Use relative URLs in HTML, make RSS URLs configurable
+ ROL-175 Most recent weblog entries on main page not refreshed
+ ROL-178 PageCache and RssCache filter timeouts cannot differ
+ ROL-188 Links to "Most recent weblog posts" are always http
+ (roller running on https)
+
+For the full details of bug fixes, see Roller's JIRA issue tracking system
+at the URL below:
+
+ http://opensource.atlassian.com/projects/roller/BrowseProject.jspa
+
+---------------------------------------------------------------------------------
+0.9.7.1: Bug fix release
+
+Fixes these bugs:
+
+ ROL-155 referrer.refpermalink should be allowed to be null.
+ ROL-167 JavaScript error on delete comments page
+ ROL-157 Postgres SQL problems
+ ROL-152 Delete comment page is blank
+ ROL-166 Add missing <comments> element to RSS output
+ ROL-161 Comments not always in proper chrono order
+ ROL-153 Missing DBCP jars needed for Tomcat 4.0.X
+ ROL-159 Newsfeed display macro(s) broken
+ ROL-171 comments needs improvement, I get lots of double postings
+ ROL-162 Comment formatting not preserved when HTML disabled
+ ROL-156 Remove JSTL to please Resin
+ ROL-169 Javier's Calendar style improvements
+ ROL-163 #showRSSAutodiscoveryLink() is not XHTML compliant
+ ROL-170 Support Mozilla 1.3 Midas Editor
+ ROL-164 Upgrade to Velocity 1.3.1
+ ROL-165 Upgrade to Hibernate 2.0 RC1
+ ROL-154 Missing indices needed for MySQL 4.0
+
+For the full details of bug fixes, see Roller's JIRA issue tracking system
+at the URL below:
+
+ http://opensource.atlassian.com/projects/roller/BrowseProject.jspa
+
+---------------------------------------------------------------------------------
+0.9.7: Major new release
+
+Summary of new features:
+
+ Comments, Trackbacks, and Linkbacks
+ * Both in-page and pop-up style comments are supported
+ * Remember-me feature for comments
+ * You can delete comments that you don't like
+ * Support for Movable Type style Trackbacks
+ * Trackbacks are treated as comments
+ * You can send Trackback pings to other weblogs
+ * Support for Mark Pilgrim style "for further reading" Linkbacks
+ * Linkback searches referring sites and RSS feeds for excerpts
+ * Linkbacks can be disabled by Roller administrator
+ * New showDayReferrers() macros displays Linkbacks for day
+
+ MetaWeblog API
+ * Support for both Blogger API and MetaWeblog API
+ * Allows both titles and categories from w.bloggar and other clients.
+
+ General
+ * Simplified main page is much faster than before
+ * Main page displays most recent posts and most popular blogs
+ * Main page RSS feed aggregates all posts on site
+ * Remember-me feature for logins
+ * New VelociMacros are replacing old page macros
+ * One click to post as public or post as private
+ * Spell checker for posts
+
+For the full list of bug fixes, see Roller's JIRA issue tracking system
+at the URL below:
+
+ http://opensource.atlassian.com/projects/roller/BrowseProject.jspa
+
+
+---------------------------------------------------------------------------------
+0.9.6: Administration enhancements, new features, bug fixes
+
+Summary of new features:
+
+ Multi-user features:
+ - Admin UI for deleting users
+ - Better start page: pages through users, shows time of last update
+ - Plugin authenticator for JavaLobby integration
+ - Allow users to change their email addresses and passwords
+
+ Weblog authoring enhancements:
+ - Ekit HTML editor applet is available as an option to users
+ - Option to save weblog entries without publishing them
+ - Better control over weblog entry publish date
+ - Daily referrer and hit tracking
+
+ New and improved macros:
+ - Protection from recursion in includePage and showWeblogEntries macros
+ - Big archive calendar macro shows titles for each day
+ - Expand/collapse feature in Bookmark and Newsfeed macros
+ - Users can control number of weblog entries displayed
+ - New macros, including those necessary for RSS templating
+
+ RSS related features:
+ - Built in support for RSS 2.0
+ - Multiple RSS feeds for each weblog, one for each category
+ - RSS feeds available with full-text or excerpts only
+ - RSS aggregation features may now be disabled
+ - RSS syndication output is now cached
+
+For the full list of enhancements and bug fixes, see Roller's JIRA issue
+tracking system at the URL below:
+
+ http://opensource.atlassian.com/projects/roller/BrowseProject.jspa
+
+-----------------------------------------------------------------------------
+0.9.5: Enhancements, better database support, bug fixes (August 31, 2002)
+
+This new Roller release includes some enhancements to XHTML support,
+bookmark management, database support for PostgreSQL and HSQL-DB, and
+some bug fixes. Thanks to new Roller contributors Lance Lavandowska,
+Matt Raible, Simon Stewart for their work on this release.
+
+ - Support for XHTML and CSS in generated weblog pages (Matt)
+ - Better Page URLs in the Navigation Bar Tag and PageServlet (Lance)
+ - Support for HSQL and PostgreSQL databases (Lance and Simon)
+ - Export feature for backing up website (Dave)
+ - Bookmark import by file-upload of OPML file (Dave)
+ - Multiple bookmark move and delete on edit-bookmark page (Dave)
+ - Some bug fixes
+
+-----------------------------------------------------------------------------
+0.9.4: Bug fixes (July 6, 2002)
+
+ Fixes for these bugs:
+
+ Bug #576004: Blogger API posts do not flush cache
+ Bug #576719: Calendar in Weblog:Edit page not working
+ Bug #576902: Error in web.xml, rollerdb datasource was omited
+ Bug #576157: RSS feed items are not ordered properly
+ Bug #576731: Database jars should go in common/lib
+
+
+-----------------------------------------------------------------------------
+0.9.3: New features, better configuration, and bug fixes (June 30, 2002)
+
+ - Blogger API Support: You can enable Blogger API and choose which
+ the category for incoming Blogger API posts on the Website Settings page.
+ You can configure your Blogger API client by using the path
+ /roller/xmlrpc and your Roller username and password. Blogger API
+ support was contributed by Shawn Dahlen (dahlen at mitre.org)
+
+ - Database configuration via JNDI DataSources: Roller now looks up
+ datasources in JNDI (using java:comp/env/jdbc/rollerdb).
+
+ - Database connection pooling: if you follow the instructions in the
+ Roller installation guide, Roller will use database connection pooling.
+
+ - Results caching for weblog pages: Roller now uses OSCache for caching
+ all weblog pages. This results in a dramatic improvement in performance.
+
+ - Three new themes: Roller now includes three new themes, adapted from
+ free themes found on blogskins.com.
+
+ - Lots of bug fixes: too numerous to list.
+
+-----------------------------------------------------------------------------
+0.9.2: Minor bug fixes in user and newsfeed managers
+
+-----------------------------------------------------------------------------
+0.9.1: Bug fix release April 29, 2002
+
+- BUG #542478 FIXED: Delete category broken
+ Now, if you try to delete a category that is in use you will get a
+ warning. You will be asked if you would like to move the entries in
+ that category to another category.
+
+- BUG #542479 FIXED: Delete folder broken
+ Now, if you try to delete a folder that has contents you will get a
+ warning. You will be asked if you would like to move the contents of
+ that folder to another folder.
+
+- Changed Castor JDO data member in RollerImpl to transient so that it
+ does not cause an error if the Roller session is serialized.
+
+- Introduced org.roller.business.castor.ManagerBase and made general
+ improvements in database connection usage.
+
+-----------------------------------------------------------------------------
+0.9.0: Initial public release April 6, 2002
+
Added: incubator/roller/trunk/LICENSE.txt
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/LICENSE.txt?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/LICENSE.txt (added)
+++ incubator/roller/trunk/LICENSE.txt Wed Jun 8 20:18:46 2005
@@ -0,0 +1,46 @@
+
+Roller Software License
+
+Version 1.0
+
+Copyright (c) 2000 David M Johnson. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if any, must
+include the following acknowledgment:
+
+"This product includes software developed by David M Johnson"
+
+Alternately, this acknowledgment may appear in the software itself, if and
+wherever such third-party acknowledgments normally appear.
+
+4. The names "Roller" and "David M Johnson" must not be used to endorse or
+promote products derived from this software without prior written permission.
+For written permission, please contact snoopdave@users.sourceforce.net.
+
+5. Products derived from this software may not be called "Roller", nor may
+"Roller" appear in their name, without prior written permission of David M Johnson.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ROLLER
+PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+This software consists of voluntary contributions made by many individuals on
+behalf of the David M Johnson.
+
Added: incubator/roller/trunk/README.txt
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/README.txt?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/README.txt (added)
+++ incubator/roller/trunk/README.txt Wed Jun 8 20:18:46 2005
@@ -0,0 +1,57 @@
+
+README.txt
+
+ To install Roller, follow the instructions in the Installation Guide:
+ http://www.rollerweblogger.org/wiki/Wiki.jsp?page=InstallGuide
+
+ To use Roller, follow the instructions in the Users Guide:
+ http://www.rollerweblogger.org/wiki/Wiki.jsp?page=UserGuide
+
+
+CREDITS AND COPYRIGHT NOTICES
+
+ Roller is Copyright (c) by
+ David M Johnson
+ Anil Gangolli
+ Mindaguas Idzelis
+ Lance Lanvandowska
+ Matt Raible
+ Jaap Van Der Molen
+ Henri Yandell
+ Sun Microsystems, Inc
+
+ Roller is licensed under the Apache 1.0 license (s/Apache/Roller)
+
+ Additionally, Roller contains a number of third-party software components
+ and source code from other open source projects with compatible licenses.
+
+ * Roller includes software developed by the Apache Software Foundation
+ Copyright (c) 2001 The Apache Software Foundation.
+ All rights reserved.
+
+ * Roller includes software developed by The OpenSymphony Group
+ Copyright (c) 2001 The OpenSymphony Group. All rights reserved.
+
+ * Roller includes the Hibernate persistence library, LGPL license
+
+ * Roller includes code from Blojsom
+ Copyright (c) 2003, David A. Czarnecki & Mark Lussier.
+ All rights reserved
+
+ * Roller includes JDOM
+ Copyright (c) 2000-2002 Brett McLaughlin & Jason Hunter.
+ All rights reserved.
+
+ * Roller includes the Ekit HTML editor by Howard Kistler, LGPL license
+
+ * Roller includes the Jazzy spellchecker, LGPL license
+
+ * Roller includes the JSPWiki Wiki Engine, LGPL license
+
+ * Roller includes the Radeox Wiki Engine, LGPL license
+
+ * Roller includes Jython
+ Copyright (c) 2000, Jython Developers
+
+
+
Added: incubator/roller/trunk/ant.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/ant.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/ant.properties (added)
+++ incubator/roller/trunk/ant.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1,16 @@
+build.debug=on
+build.deprecation=false
+ro.version=1.2-dev
+ro.build=./build
+ro.tools=./tools
+basedir=.
+custom.dir=./custom
+
+# The following properties (with your own appropriate values)
+# are required if using the deploy-tomcat target.
+#staging=../build/roller
+#webapp.name=roller
+#catalina.home=C:/jakarta-tomcat-5.0.28
+
+# Path to Roller source, needed by our custom Netbeans actions
+project.dir=/Users/dave/roller_main
Added: incubator/roller/trunk/build.bat
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/build.bat?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/build.bat (added)
+++ incubator/roller/trunk/build.bat Wed Jun 8 20:18:46 2005
@@ -0,0 +1,24 @@
+@echo off
+
+REM is this really necessary?
+if not "%JAVA_HOME%" == "" goto gotJavaHome
+echo You must set JAVA_HOME to point to your Java SDK install directory
+goto cleanup
+:gotJavaHome
+
+set rocp=%JAVA_HOME%\lib\tools.jar
+
+set rocp=%rocp%;.\tools\buildtime\ant-1.6.2\ant.jar
+set rocp=%rocp%;.\tools\buildtime\ant-1.6.2\ant-launcher.jar
+set rocp=%rocp%;.\tools\buildtime\ant-1.6.2\ant-junit.jar
+set rocp=%rocp%;.\tools\buildtime\ant-1.6.2\ant-commons-net.jar
+set rocp=%rocp%;.\tools\buildtime\ant-1.6.2\commons-net-1.2.2.jar
+set rocp=%rocp%;.\tools\buildtime\ant-1.6.2\jakarta-oro-2.0.8.jar
+
+set rocp=%rocp%;.\tools\buildtime\junit-3.8.1.jar
+
+echo %rocp%
+java -classpath %rocp% org.apache.tools.ant.Main %1 %2 %3 %4 %5
+
+
+
Added: incubator/roller/trunk/build.sh
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/build.sh?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/build.sh (added)
+++ incubator/roller/trunk/build.sh Wed Jun 8 20:18:46 2005
@@ -0,0 +1,16 @@
+#!/bin/bash
+if [ "$JAVA_HOME" = "" ] ; then
+ echo You must set JAVA_HOME to point to your Java JDK install directory
+ exit 1
+fi
+
+rocp=${JAVA_HOME}/lib/tools.jar
+rocp=${rocp}:./tools/buildtime/ant-1.6.2/ant.jar
+rocp=${rocp}:./tools/buildtime/ant-1.6.2/ant-launcher.jar
+rocp=${rocp}:./tools/buildtime/ant-1.6.2/ant-junit.jar
+rocp=${rocp}:./tools/buildtime/ant-1.6.2/ant-commons-net.jar
+rocp=${rocp}:./tools/buildtime/ant-1.6.2/commons-net-1.2.2.jar
+rocp=${rocp}:./tools/buildtime/ant-1.6.2/jakarta-oro-2.0.8.jar
+rocp=${rocp}:./tools/buildtime/junit-3.8.1.jar
+
+${JAVA_HOME}/bin/java -Djava.home=${JAVA_HOME} -classpath ${rocp} org.apache.tools.ant.Main $1 $2 $3 $4 $5
Added: incubator/roller/trunk/build.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/build.xml?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/build.xml (added)
+++ incubator/roller/trunk/build.xml Wed Jun 8 20:18:46 2005
@@ -0,0 +1,973 @@
+<?xml version="1.0"?>
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "properties.xmlf">
+ <!ENTITY custom-gen-web SYSTEM "custom/custom-gen-web.xmlf">
+ <!ENTITY custom-gen-beans SYSTEM "custom/custom-gen-beans.xmlf">
+ <!ENTITY custom-jars SYSTEM "custom/custom-jars.xmlf">
+ <!ENTITY custom-src-beans SYSTEM "custom/custom-src-beans.xmlf">
+ <!ENTITY custom-src-web SYSTEM "custom/custom-src-web.xmlf">
+ <!ENTITY custom-src-tests SYSTEM "custom/custom-src-tests.xmlf">
+ <!ENTITY custom-web SYSTEM "custom/custom-web.xmlf">
+ <!ENTITY custom-dbscripts SYSTEM "custom/custom-dbscripts.xmlf">
+ <!ENTITY custom-pre-dbtest SYSTEM "custom/custom-pre-dbtest.xmlf">
+ <!ENTITY custom-post-dbtest SYSTEM "custom/custom-post-dbtest.xmlf">
+ <!ENTITY custom-ant SYSTEM "custom/custom-ant.xmlf">
+]>
+<!-- ********************************************************************* -->
+<!-- Ant build script for Roller main branch -->
+<!-- Author: David M Johnson -->
+<!-- ********************************************************************* -->
+<project name="roller" default="usage">
+
+<!-- Bring in properties.xml -->
+&properties;
+
+<!-- Bring in custom properties and targets -->
+&custom-ant;
+
+<target name="usage" description="Print usage for key targets">
+<echo>
+Key Targets:
+ all - Build all: gen code, compile code, stage web directory
+ build - Same as 'all' but no code gen
+ javadoc - Run javadoc against (generated) code
+ clean - Blow away all generated code and all byte code
+ rebuild - Clean and build all
+ usage - Print this help text...
+</echo>
+</target>
+
+<!-- ================================================ -->
+<!-- Meta targets -->
+<!-- ================================================ -->
+<target name="all" depends="generate,stage-web" description="Build all">
+</target>
+
+<target name="build" depends="stage-web" description="Compile only, no code generation">
+</target>
+
+<target name="rebuild" depends="clean,all" description="Clean and build all">
+</target>
+
+<target name="clean" description="Clean out build directory">
+ <delete dir="./build"/>
+</target>
+
+<!-- ********************************************************************* -->
+<!-- XDoclet code generation -->
+<!-- ********************************************************************* -->
+
+<target name="generate" depends="gen-forms,gen-hibernate,gen-web" >
+</target>
+
+<!-- ============================================== -->
+<!-- generate Struts forms -->
+<target name="gen-forms" description="XDoclet generate form beans">
+
+ <!-- Define the XDoclet xdoclet task -->
+ <taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask"
+ classpathref="xdoclet.path" />
+ <mkdir dir="${build.generated}/src.presentation"/>
+ <mkdir dir="${build.generated}/src.business"/>
+ <mkdir dir="${build.generated}/META-INF"/>
+ <mkdir dir="${ro.build}/junk"/>
+
+ <!-- Use EJBDoclet to generate Struts forms -->
+ <ejbdoclet destdir="${build.generated}/src" excludedtags="@version,@author">
+ <fileset dir="./src" includes="org/roller/pojos/*Data.java" />
+ <fileset dir="./src" includes="org/roller/business/*Data.java" />
+ &custom-gen-web;
+
+ <!-- Generate Struts forms -->
+ <strutsform destdir="${build.generated}/src.presentation"
+ prefixWithPackageStructure="no"
+ templateFile="./metadata/xdoclet/struts_form.xdt">
+
+ <!-- into the org.roller.presentation.forms package -->
+ <packageSubstitution packages="pojos"
+ substituteWith="presentation.forms"/>
+ <packageSubstitution packages="presentation"
+ substituteWith="presentation.forms"/>
+ </strutsform>
+
+ <!-- We are not actually generating data objects, but using the
+ dataobject subtask allows the strutsform subtask to add nice
+ Adds nice constructors and setData methods to Struts forms -->
+ <dataobject destdir="${ro.build}/junk" pattern="{0}" />
+
+ </ejbdoclet>
+
+ <copy todir="./personal/testing">
+ <fileset dir="${build.generated}" includes="mapping.xml"/>
+ </copy>
+
+ <!-- Change Struts form names from *DataForm.java to *Form.java -->
+ <replace dir="${build.generated}/src.presentation/org/roller/presentation/forms"
+ token="DataForm" value="Form"/>
+ <move todir="${build.generated}/src.presentation/org/roller/presentation/forms">
+ <fileset dir="${build.generated}/src.presentation/org/roller/presentation/forms" >
+ <include name="*DataForm.java"/>
+ <include name="*ConfigForm.java" />
+ </fileset>
+ <mapper type="glob" from="*DataForm.java" to="*Form.java"/>
+ </move>
+
+</target>
+
+<!-- ============================================== -->
+<!-- generate Hibernate mappings -->
+<target name="gen-hibernate" description="XDoclet Generate Hibernate mappings">
+
+ <taskdef name="hibernatedoclet"
+ classname="xdoclet.modules.hibernate.HibernateDocletTask"
+ classpathref="xdoclet.path" />
+
+ <!-- generate hibernate files -->
+ <hibernatedoclet
+ destdir="${build.compile_beans}"
+ mergedir="./metadata/xdoclet"
+ excludedtags="@version,@author"
+ addedtags="@xdoclet-generated at ${TODAY}"
+ force="true">
+ <fileset dir="./src" includes="org/roller/pojos/*Data.java" />
+ <fileset dir="./src" includes="org/roller/pojos/*Assoc.java" />
+ <fileset dir="./src" includes="org/roller/business/*Data.java" />
+ &custom-gen-beans;
+ <hibernate validatexml="true" version="2.0"/>
+ </hibernatedoclet>
+
+</target>
+
+<!-- ============================================== -->
+<!-- Generate web deployment descriptors -->
+<target name="gen-web" description="XDoclet generate web depoyment descriptors">
+
+ <!-- Define the XDoclet webdoclet task -->
+ <taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask"
+ classpathref="xdoclet.path" />
+
+ <!-- Use WebDoclet to web.xml, struts-config.xml, and TLDs -->
+ <mkdir dir="${build.stage_web}/WEB-INF"/>
+ <mkdir dir="${build.compile_web}/META-INF/tlds"/>
+
+ <webdoclet force="true"
+ destdir="${build.stage_web}/WEB-INF"
+ mergedir="./metadata/xdoclet"
+ excludedtags="@version,@author">
+
+ <fileset dir="./src">
+ <!-- Speed up XDoclet by limiting number of files it has to process -->
+ <include name="**/*Action.java" />
+ <include name="**/*Filter.java" />
+ <include name="**/*Form.java" />
+ <include name="**/*FormEx.java" />
+ <include name="**/*Servlet.java" />
+ <include name="**/*Tag.java" />
+ <include name="org/roller/presentation/**/actions/*.java" />
+ <include name="org/roller/presentation/RollerContext.java" />
+ <include name="org/roller/presentation/RollerSession.java" />
+ <exclude name="**/IPBanFilter**" />
+ <exclude name="**/LinkTag**" />
+ <exclude name="**/LinkParamTag**" />
+ </fileset>
+ <fileset dir="${build.generated}/src.presentation">
+ <include name="**/*Form.java" />
+ </fileset>
+ &custom-gen-web;
+
+ <deploymentdescriptor servletspec="2.3"
+ destdir="${build.stage_web}/WEB-INF"
+ sessiontimeout="30"
+ displayname="Roller Weblogger">
+ </deploymentdescriptor>
+
+ <jsptaglib jspversion="1.2" filename="roller.tld" shortname="roller"
+ uri="http://www.rollerweblogger.org/tags"
+ destdir="${build.compile_web}/META-INF/tlds"/>
+
+ <strutsconfigxml destdir="${build.stage_web}/WEB-INF"
+ validatexml="true" mergedir="./metadata/xdoclet" version="1.1" />
+ <strutsvalidationxml/>
+
+ </webdoclet>
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Compile and jar Business Tier classes -->
+<!-- ********************************************************************* -->
+
+<target name="build-beans">
+ <mkdir dir="${ro.build}/lib"/>
+ <mkdir dir="${build.compile_beans}"/>
+
+ <tstamp>
+ <format property="ro.buildTime" pattern="yyyyMMddhhmmss" />
+ </tstamp>
+
+ <echo file="${build.compile_beans}/version.properties">
+ro.version=${ro.version}
+ro.buildTime=${ro.buildTime}
+ro.buildUser=${user.name}
+ </echo>
+
+ <javac debug="${build.debug}" destdir="${build.compile_beans}"
+ excludes="org/roller/presentation/**" >
+ <src path="${basedir}/src" />
+ &custom-src-beans;
+ <classpath>
+ <path refid="business.path"/>
+ &custom-jars;
+ </classpath>
+ </javac>
+ <!-- Copy class resources -->
+ <copy todir="${build.compile_beans}/org/roller/model">
+ <fileset dir="${build.generated}/src.business" includes="*.hbm.xml"/>
+ </copy>
+ <!-- Jar up the beans -->
+ <jar basedir="${build.compile_beans}"
+ jarfile="${ro.build}/lib/rollerbeans.jar"/>
+
+</target>
+
+<!-- For versions of Resin before 2.1.9 we have to turn the
+ HttpServletResponseWrapper into a CauchoResponseWrapper. We have
+ to do away with the original or there will be compile errors. -->
+<target name="prepare.resin" if="resinFilters">
+ <echo>Convert HttpServletResponseWrappers to CauchoResponseWrappers</echo>
+ <replace dir="./src"
+ token="extends HttpServletResponseWrapper"
+ value="extends com.caucho.http.filter.CauchoResponseWrapper" />
+ <replace file="${build.stage_web}/WEB-INF/web.xml"
+ token="<!-- RESIN-CACHE -->" >
+ <replacevalue><![CDATA[
+ <init-param>
+ <param-name>handler</param-name>
+ <param-value>CommonsPageCache</param-value>
+ </init-param>
+ ]]></replacevalue>
+ </replace>
+
+</target>
+
+<!-- Now that the compilation is done, undo the damage from prepare.resin -->
+<target name="undo.resin" if="resinFilters">
+ <echo>Convert CauchoResponseWrappers to HttpServletResponseWrappers</echo>
+ <replace dir="./src"
+ value="extends HttpServletResponseWrapper"
+ token="extends com.caucho.http.filter.CauchoResponseWrapper" />
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Compile and jar Presentation Tier classes -->
+<!-- ********************************************************************* -->
+
+<target name="build-web" depends="build-beans" >
+
+ <mkdir dir="${build.compile_web}"/>
+ <antcall target="prepare.resin" />
+ <javac debug="${build.debug}" destdir="${build.compile_web}"
+ includes="org/roller/presentation/**" >
+ <src path="./src" />
+ <src path="${build.generated}/src.presentation"/>
+ &custom-src-web;
+ <classpath>
+ <path refid="presentation.path"/>
+ <path location="${build.compile_beans}"/>
+ &custom-jars;
+ </classpath>
+ </javac>
+ <copy todir="${build.compile_web}">
+ <fileset dir="./src">
+ <include name="**/*.properties"/>
+ <include name="**/*.tpl"/>
+ <include name="**/*.vm"/>
+ </fileset>
+ </copy>
+ <!-- Generate and compile JSP files (just as an error checking measure)
+ <mkdir dir="${build.jspc}"/>
+ <path id="jspc.classpath">
+ <path refid="presentation.path"/>
+ <path location="${build.compile_beans}"/>
+ <path location="${build.compile_web}"/>
+ <path location="${ro.tools}/lib/ant-1.5.1.jar"/>
+ <path location="${ro.tools}/lib/ant-optional-1.5.1.jar"/>
+ <path location="${ro.tools}/lib/jasper-compiler.jar"/>
+ <path location="${ro.tools}/lib/jasper-runtime.jar"/>
+ </path>
+ <jspc srcdir="./web" destdir="${build.jspc}"
+ classpathref="jspc.classpath">
+ </jspc>
+ <javac srcdir="${build.jspc}" destdir="${build.jspc}"
+ classpathref="jspc.classpath">
+ </javac> -->
+
+ <antcall target="undo.resin" />
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Stage web resources: allows us to work on JSP's without restarts -->
+<!-- ********************************************************************* -->
+
+<target name="copy-web" description="Stage web app, without jars">
+ <!-- Copy web contents to staging, plus README files. -->
+ <copy todir="${build.stage_web}">
+ <fileset dir="./web">
+ <include name="**/*"/>
+ <exclude name="**/codewright*/**"/>
+ <exclude name="**/CVS/**"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <exclude name="**/berkley/**"/> <!-- not ready yet -->
+ </fileset>
+ <fileset dir=".">
+ <include name="README.txt"/>
+ <include name="LICENSE.txt"/>
+ <include name="CHANGES.txt"/>
+ </fileset>
+ </copy>
+ &custom-web;
+ </target>
+
+<!-- ********************************************************************* -->
+<!-- Stage web application -->
+<!-- ********************************************************************* -->
+
+<target name="stage-web" depends="build-web" description="Stage web app, including jars">
+
+ <mkdir dir="${build.stage_web}/resources"/>
+ <mkdir dir="${build.stage_web}/WEB-INF/lib"/>
+ <mkdir dir="${build.stage_web}/WEB-INF/tlds"/>
+
+ <!-- Jar up web classes -->
+ <jar jarfile="${build.stage_web}/WEB-INF/lib/rollerweb.jar">
+ <fileset dir="${build.compile_web}" excludes="**/tomcat/**"/>
+ </jar>
+
+ <!-- Copy web contents to staging, plus README files. -->
+ <antcall target="copy-web" />
+
+ <!-- Copy database configs to classpath in staging -->
+ <copy todir="${build.stage_web}/WEB-INF/classes">
+ <fileset dir="./metadata/database/hibernate" includes="hibernate.cfg.xml"/>
+ <fileset dir="${ro.tools}/lib" includes="oscache.properties"/>
+ </copy>
+
+ <!-- Copy WEB-INF contents to staging -->
+ <copy todir="${build.stage_web}/WEB-INF">
+ <fileset dir="${build.generated}" includes="mapping.xml"/>
+ <fileset dir="${tools.struts}/lib" includes="validator-rules.xml"/>
+ </copy>
+
+ <!-- Copy other jars -->
+ <copy todir="${build.stage_web}/WEB-INF/lib">
+
+ <fileset dir="${ro.build}/lib" includes="rollerbeans.jar"/>
+ <fileset refid="base.jars" />
+ <fileset refid="presentation.jars" />
+ <fileset refid="hibernate.jar" />
+ <fileset refid="hibernate.jars" />
+ <fileset refid="commons.jars" />
+ <fileset refid="struts.jars" />
+ <fileset refid="jstl.jars" />
+ <fileset refid="xml.jars" />
+ &custom-jars;
+ <fileset dir="${ro.tools}/lib">
+ <include name="mm.mysql-2.0.14-bin.jar" if="resinServer"/>
+ </fileset>
+ <fileset dir="${ro.tools}/buildtime">
+ <include name="xercesImpl-2.3.0.jar" if="resinServer"/>
+ <include name="xmlParserAPIs-2.3.0.jar" if="resinServer"/>
+ </fileset>
+ </copy>
+ <!-- Copy DTDs and TLDs -->
+ <copy todir="${build.stage_web}/WEB-INF/tlds">
+ <fileset dir="${ro.tools}/lib" includes="*.tld"/>
+ </copy>
+ <!-- Copy applet jars to root of servlet context -->
+ <copy todir="${build.stage_web}">
+ <fileset dir="${ro.tools}/lib">
+ <include name="ekitapplet.jar"/>
+ </fileset>
+ </copy>
+ <!-- copy database related files -->
+ <antcall target="stage-dbscripts" />
+
+ <ant inheritAll="false" dir="contrib" />
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Create different versions of database setup script -->
+<!-- With this approach we won't have to expand the script all the time. -->
+<!-- ********************************************************************* -->
+
+<target name="stage-dbscripts">
+ <property name="dbscripts" value="${build.stage_web}/WEB-INF/dbscripts"/>
+
+ <!-- Create database creation script directory -->
+ <mkdir dir="${dbscripts}"/>
+ <copy todir="${dbscripts}">
+ <fileset dir="./metadata/database" includes="droptables.sql"/>
+ <fileset dir="./metadata/database" includes="*.sh,*.bat,rollerdb.properties"/>
+ </copy>
+
+ <!-- MYSQL -->
+ <copy toDir="${dbscripts}/mysql">
+ &custom-dbscripts;
+ <fileset dir="./metadata/database">
+ <include name="*.sql" />
+ <exclude name="droptables.sql" />
+ </fileset>
+ <filterset>
+ <filtersfile file="./metadata/database/db_mysql.properties"/>
+ </filterset>
+ <mapper type="glob" from="*-raw.sql" to="*.sql" />
+ </copy>
+
+ <!-- POSTGRESQL -->
+ <copy toDir="${dbscripts}/postgresql">
+ &custom-dbscripts;
+ <fileset dir="./metadata/database">
+ <include name="*.sql" />
+ <exclude name="droptables.sql" />
+ </fileset>
+ <filterset>
+ <filtersfile file="./metadata/database/db_postgresql.properties"/>
+ </filterset>
+ <mapper type="glob" from="*-raw.sql" to="*.sql" />
+ </copy>
+
+ <!-- HSQL -->
+ <copy toDir="${dbscripts}/hsql">
+ &custom-dbscripts;
+ <fileset dir="./metadata/database">
+ <include name="*.sql" />
+ <exclude name="droptables.sql" />
+ </fileset>
+ <filterset>
+ <filtersfile file="./metadata/database/db_hsql.properties"/>
+ </filterset>
+ <mapper type="glob" from="*-raw.sql" to="*.sql" />
+ </copy>
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Build extras -->
+<!-- ********************************************************************* -->
+
+<target name="contrib" depends="stage-web">
+ <ant dir="contrib" />
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Generate Javadocs -->
+<!-- ********************************************************************* -->
+
+<target name="javadoc">
+ <mkdir dir="${build.javadoc}"/>
+ <javadoc
+ bottom="Copyright (C) David M Johnson"
+ classpathref="javadoc.path"
+ destdir="${build.javadoc}"
+ doctitle="Javadocs: Roller Weblogger ${ro.version}"
+ private="false"
+ version="false"
+ windowtitle="Javadocs: Roller Weblogger ${ro.version}">
+ <sourcepath>
+ <pathelement path="./src"/>
+ <pathelement path="${ro.build}/generated/src.business"/>
+ <pathelement path="${ro.build}/generated/src.presentation"/>
+ </sourcepath>
+ <packageset dir="src" defaultexcludes="yes">
+ <include name="org/roller/**" />
+ <exclude name="org/roller/business/prevayler/**" />
+ </packageset>
+ <link href="http://java.sun.com/j2se/1.4/docs/api/"/>
+ <link href="http://java.sun.com/products/servlet/2.3/javadoc/"/>
+ <link href="http://jakarta.apache.org/struts/doc-1.0.2/api"/>
+ <link href="http://hibernate.bluemars.net/hib_docs/api/"/>
+ </javadoc>
+
+ <antcall target="velocidoc" />
+</target>
+
+<target name="velocidoc">
+ <mkdir dir="${build.velocidoc}/temp"/>
+ <copy todir="${build.velocidoc}/temp">
+ <fileset dir="./web/WEB-INF/classes/">
+ <include name="bookmarks.vm" />
+ <include name="comments.vm" />
+ <include name="navbar.vm" />
+ <include name="navbar-css.vm" />
+ <include name="referer.vm" />
+ <include name="roller.vm" />
+ <include name="rssmacros.vm" />
+ <include name="user.vm" />
+ <include name="weblog.vm" />
+ <include name="website.vm" />
+ </fileset>
+ </copy>
+ <mkdir dir="${build.velocidoc}/docs"/>
+ <java fork="true" jar="${ro.tools}/buildtime/velocidoc-app.jar">
+ <arg line="-s ${build.velocidocs}/temp -d ${build.velocidoc}/docs"/>
+ <arg line="-ctl ${ro.tools}/buildtime/velocidoc-templates/control.vm"/>
+ <arg line="-src ${ro.tools}/buildtime/velocidoc-templates/"/>
+ </java>
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Create Binary Release -->
+<!-- ********************************************************************* -->
+
+<target name="full-release" depends="binary-release">
+</target>
+
+<target name="binary-release" depends="source-release">
+ <!-- Substitute in resource ref for deployment for standard container -->
+ <replace file="${build.stage_web}/WEB-INF/web.xml"
+ token="<!-- TOMCAT_RESOURCE_REF -->">
+ <replacevalue><![CDATA[
+ <resource-ref>
+ <res-ref-name>jdbc/rollerdb</res-ref-name>
+ <res-type>javax.sql.DataSource</res-type>
+ <res-auth>Container</res-auth>
+ </resource-ref>
+ ]]></replacevalue>
+ </replace>
+ <fixcrlf srcdir="${build.stage_web}/WEB-INF" eol="lf" includes="**/*.xml" />
+ <!-- Tar and GZip the webapp -->
+ <tar tarfile="${ro.build}/roller-${ro.version}.tar"
+ basedir="${ro.build}"
+ includes="roller/**"
+ excludes="roller/article/**,**/*.bak,**/*~" />
+ <gzip zipfile="${ro.build}/roller-${ro.version}.tar.gz"
+ src="${ro.build}/roller-${ro.version}.tar" />
+ <delete>
+ <fileset dir="${ro.build}" includes="*.tar"/>
+ </delete>
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- Create Source Release -->
+<!-- ********************************************************************* -->
+
+<target name="source-release" depends="contrib">
+ <!-- <antcall target="rebuild"/> -->
+ <!-- Tar and GZip the sources -->
+ <tar tarfile="${ro.build}/roller-src-${ro.version}.tar">
+ <tarfileset dir="./src/../..">
+ <include name="roller/metadata/**" />
+ <include name="roller/personal/eclipse/**" />
+ <include name="roller/personal/sample.build.xml" />
+ <include name="roller/custom/**" />
+ <include name="roller/contrib/**" />
+ <include name="roller/src/**" />
+ <include name="roller/tests/**" />
+ <include name="roller/web/**" />
+ <include name="roller/docs/**" />
+ <exclude name="roller/docs/installguide/old/**"/>
+ <exclude name="roller/docs/userguide/old/**"/>
+ <include name="roller/ant.properties" />
+ <include name="roller/build.bat" />
+ <include name="roller/build.sh" />
+ <include name="roller/build.xml" />
+ <include name="roller/properties.xmlf" />
+ <include name="roller/CHANGES.txt" />
+ <include name="roller/LICENSE.txt" />
+ <include name="roller/README.txt" />
+ <exclude name="**/codewright*/**"/>
+ <exclude name="**/CVS/**"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*-hide"/>
+ <exclude name="**/*.diff"/>
+ <exclude name="**/*.patch"/>
+ <exclude name="**/*~"/>
+ <exclude name="**/*.#*"/>
+ <exclude name="**/WS_FTP.LOG"/>
+ <exclude name="**/.nbattrs"/>
+ </tarfileset>
+ </tar>
+ <gzip zipfile="${ro.build}/roller-src-${ro.version}.tar.gz"
+ src="${ro.build}/roller-src-${ro.version}.tar" />
+ <!-- Tar and GZip the tools -->
+ <tar tarfile="${ro.build}/roller-tools-${ro.version}.tar"
+ basedir="./src/../.."
+ includes="roller/tools/**"
+ excludes="**/*.bak,**/*~" />
+ <gzip zipfile="${ro.build}/roller-tools-${ro.version}.tar.gz"
+ src="${ro.build}/roller-tools-${ro.version}.tar" />
+ <delete>
+ <fileset dir="${ro.build}" includes="*.tar"/>
+ </delete>
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- TEST targets -->
+<!-- ********************************************************************* -->
+
+<target name="tests" depends="build-test" description="All unit tests" >
+ <antcall target="test-hibernate"/>
+ <antcall target="test-servlets"/>
+ <antcall target="test-utils"/>
+</target>
+
+<target name="build-test" depends="build" description="Build unit tests" >
+
+ <mkdir dir="${build.tests}" />
+ <mkdir dir="${build.tests}/logs" />
+ <mkdir dir="${build.tests}/WEB-INF/classes" />
+ <mkdir dir="${build.tests}/WEB-INF/classes/themes" />
+
+ <javac srcdir="${basedir}/tests/"
+ destdir="${build.tests}/WEB-INF/classes"
+ includeantruntime="false"
+ debug="true" optimize="false" verbose="false" deprecation="false">
+ &custom-src-tests;
+ <classpath>
+ <path refid="junit.path"/>
+ </classpath>
+ </javac>
+
+ <!-- register Ant tasks that were just built -->
+ <taskdef name="startdb" classname="org.roller.ant.StartHsqldbTask"
+ classpath="${basedir}/tools/buildtime/hsqldb.jar;${build.tests}/WEB-INF/classes" />
+ <taskdef name="stopdb" classname="org.roller.ant.StopHsqldbTask"
+ classpath="${basedir}/tools/buildtime/hsqldb.jar;${build.tests}/WEB-INF/classes" />
+
+ <!--
+ Copy required files to ${build.tests} to make them available for
+ testing without interfering with the "real" build in ${build.stage_web}
+ -->
+
+ <copy file="${basedir}/personal/testing/roller.properties"
+ todir="${build.tests}/WEB-INF/classes/"/>
+
+ <copy file="${basedir}/personal/testing/hibernate.cfg.xml"
+ tofile="${build.tests}/WEB-INF/classes/hibernate.cfg.xml" />
+
+ <copy file="${basedir}/personal/testing/log4j.properties"
+ tofile="${build.tests}/WEB-INF/classes/log4j.properties" />
+
+ <copy file="${basedir}/personal/testing/bookmarks.opml"
+ tofile="${build.tests}/WEB-INF/classes/bookmarks.opml" />
+
+ <copy file="${basedir}/web/images/rssbadge.gif"
+ tofile="${build.tests}/rssbadge.gif" />
+
+ <copy todir="${build.tests}/WEB-INF/classes">
+ <fileset dir="${basedir}/web/WEB-INF/classes">
+ <include name="App*.properties"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${build.tests}/WEB-INF/classes">
+ <fileset dir="${basedir}/web/WEB-INF/classes">
+ <include name="**/*.vm"/>
+ </fileset>
+ </copy>
+
+ <copy file="${basedir}/web/WEB-INF/classes/rollerRuntimeConfigDefs.xml"
+ todir="${build.tests}/WEB-INF/classes/"/>
+
+ <copy file="${basedir}/web/WEB-INF/velocity.properties"
+ tofile="${build.tests}/WEB-INF/velocity.properties" />
+
+ <copy file="${basedir}/web/WEB-INF/classes/rome.properties"
+ tofile="${build.tests}/WEB-INF/classes/rome.properties" />
+
+ <copy file="${basedir}/web/WEB-INF/toolbox.xml"
+ tofile="${build.tests}/WEB-INF/toolbox.xml" />
+
+ <copy file="${basedir}/web/WEB-INF/classes/blacklist.txt"
+ tofile="${build.tests}/WEB-INF/classes/blacklist.txt" />
+
+</target>
+
+<target name="clean-tests" description="Removes test build and result artifacts and reports">
+ <delete dir="${ro.build}/tests"/>
+ <delete dir="${ro.build}/build/reports"/>
+</target>
+
+<target name="test-hibernate" depends="build-test" description="Back-end tests">
+
+ <mkdir dir="${build.reports}/hibernate/xml"/>
+ <mkdir dir="${build.reports}/hibernate/html"/>
+
+ <startdb database="${build.tests}/testdb" port="3219" />
+
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="${ro.build}/roller/WEB-INF/dbscripts/hsql/createdb.sql"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+
+ &custom-pre-dbtest;
+
+ <junit fork="true" dir="${build.tests}">
+ <classpath>
+ <path refid="junit.path"/>
+ </classpath>
+ <jvmarg value="-Dro.build=${ro.build}"/>
+ <jvmarg value="-Dcatalina.base=${build.tests}"/> <!-- needed to satisfy ref in log4j.properties -->
+ <formatter type="xml"/>
+ <batchtest toDir="${build.reports}/hibernate/xml">
+ <fileset dir="${build.tests}/WEB-INF/classes">
+ <include name="org/roller/business/*Test.class"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ <junitreport todir="${build.reports}/hibernate/xml">
+ <fileset dir="${build.reports}/hibernate/xml">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report format="noframes" toDir="${build.reports}/hibernate/html"/>
+ </junitreport>
+
+ &custom-post-dbtest;
+
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="./build/roller/WEB-INF/dbscripts/droptables.sql"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+
+ <stopdb port="3219"/>
+
+ <echo>Suggested: Run "ant consistency-check".</echo>
+</target>
+
+<target name="test-servlets" depends="build-test">
+ <mkdir dir="${build.reports}/servlets/xml"/>
+ <mkdir dir="${build.reports}/servlets/html"/>
+
+ <startdb database="${build.tests}/testdb" port="3219" />
+
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="./build/roller/WEB-INF/dbscripts/hsql/createdb.sql"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+
+ <junit fork="true" dir="${build.tests}">
+ <batchtest toDir="${build.reports}/servlets/xml">
+ <fileset dir="${build.tests}/WEB-INF/classes">
+ <include name="org/roller/presentation/**/*Test.class"/>
+ <exclude name="**/ApplicationResourcesTest.class"/>
+ <exclude name="**/ArchiveParserTest.class"/>
+ <exclude name="**/AtomCollectionTest.class"/>
+ <exclude name="**/AtomServletTest.class"/>
+ <exclude name="**/ExportRssTest.class"/>
+ <exclude name="**/LanguageUtilTest.class"/>
+ </fileset>
+ </batchtest>
+ <!--arg value="org.roller.presentation.velocity.ExportRssTest"/-->
+ <jvmarg value="-DrollerImpl=hibernate"/>
+ <jvmarg value="-Dro.build=${ro.build}"/>
+ <jvmarg value="-Dcatalina.base=${build.tests}"/> <!-- needed to satisfy ref in log4j.properties -->
+ <formatter type="xml"/>
+ <classpath>
+ <path refid="junit.path"/>
+ </classpath>
+ </junit>
+
+ <junitreport todir="${build.reports}/servlets/xml">
+ <fileset dir="${build.reports}/servlets/xml">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report format="noframes" toDir="${build.reports}/servlets/html"/>
+ </junitreport>
+
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="./build/roller/WEB-INF/dbscripts/droptables.sql"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+
+ <stopdb port="3219" />
+</target>
+
+<target name="test-utils" depends="build-test" >
+ <mkdir dir="${build.reports}/utils/xml"/>
+ <mkdir dir="${build.reports}/utils/html"/>
+
+ <junit fork="true" dir="${build.tests}">
+ <batchtest toDir="${build.reports}/utils/xml">
+ <fileset dir="${build.tests}/WEB-INF/classes">
+ <include name="org/roller/util/*Test.class"/>
+ </fileset>
+ </batchtest>
+ <jvmarg value="-DrollerImpl=hibernate"/>
+ <jvmarg value="-Dcatalina.base=."/> <!-- needed to satisfy ref in log4j.properties -->
+ <formatter type="xml"/>
+ <classpath>
+ <path refid="junit.path"/>
+ </classpath>
+ </junit>
+
+ <junitreport todir="${build.reports}/utils/xml">
+ <fileset dir="${build.reports}/utils/xml">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report format="noframes" toDir="${build.reports}/utils/html"/>
+ </junitreport>
+
+</target>
+
+<!-- You can specify testClass using -DtestClass=foo -->
+<property name="testClass" value="org.roller.presentation.velocity.plugins.smileys.SmileysTest"/>
+<target name="test-one" depends="build-test">
+ <java classname="junit.textui.TestRunner" fork="yes" failonerror="false">
+ <arg value="${testClass}"/>
+ <classpath>
+ <path refid="junit.path"/>
+ </classpath>
+ </java>
+</target>
+
+<!-- ********************************************************************* -->
+<!-- EXAMPLE targets -->
+<!-- ********************************************************************* -->
+
+<target name="deploy-tomcat" depends="stage-web" >
+ <ant dir="./personal" target="deploy-tomcat" />
+</target>
+<target name="deploy-resin" depends="stage-web" >
+ <ant dir="./personal" target="deploy-resin" />
+</target>
+<target name="deploy-isp" depends="stage-web" >
+ <ant dir="./personal" target="deploy-isp" />
+</target>
+<target name="clean-isp">
+ <ant dir="./personal" target="clean-isp" />
+</target>
+<target name="official-release" depends="tests,full-release" >
+ <ant dir="./personal" target="official-release" />
+</target>
+
+<!-- ********************************************************************* -->
+<!-- EXPERIMENTAL targets -->
+<!-- ********************************************************************* -->
+
+<!-- EXPERIMENTAL: Run ConsistencyCheck. -->
+<target name="consistency-check">
+<echo>Use -Ddelete=1 to delete all orphans.
+Use -Dverbose=1 to get verbose output.
+'delete' and 'verbose' are exclusive, 'delete' wins.
+</echo>
+ <condition property="command" value="-v">
+ <isset property="verbose" />
+ </condition>
+ <condition property="command" value="-purge">
+ <isset property="delete" />
+ </condition>
+ <java classname="org.roller.business.utils.ConsistencyCheck" fork="yes">
+ <arg value="${command}"/>
+ <jvmarg value="-Dusername=roller"/>
+ <jvmarg value="-Dpassword=tiger"/>
+ <classpath>
+ <path refid="base.path"/>
+ <path location="${ro.build}/lib/rollerbeans.jar"/>
+ <path location="${ro.tools}/lib/mm.mysql-2.0.14-bin.jar"/>
+ </classpath>
+ </java>
+</target>
+
+<target name="findbugs" depends="build">
+ <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
+ classpathref="findbugs.path" />
+
+ <property name="findbugs.home" value="${ro.tools}/buildtime/findbugs" />
+ <findbugs home="${findbugs.home}"
+ output="xml"
+ outputFile="${findbugs.home}/roller-fb.xml"
+ projectFile="${basedir}/tools/buildtime/findbugs/roller.fb" >
+ <!--
+ <auxClasspath refid="findbugs.path" />
+ <sourcePath path="${basedir}/src/" />
+ <sourcePath path="${basedir}/contrib/plugins/src/" />
+ <sourcePath path="${basedir}/tests/" />
+ <class location="${build.stage_web}/WEB-INF/lib/rollerbeans.jar" />
+ <class location="${build.stage_web}/WEB-INF/lib/rollerweb.jar" />
+ <class location="${build.stage_web}/WEB-INF/lib/rollercontrib.jar" />
+ -->
+ </findbugs>
+</target>
+
+<target name="compile-jsps" depends="stage-web">
+ <path id="jasper.path">
+ <path location="${build.stage_web}/WEB-INF/classes" />
+ <fileset dir="${build.stage_web}/WEB-INF/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <fileset dir="${ro.tools}/tomcat-4.1.24">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="${ro.tools}/lib">
+ <include name="servlet-*.jar"/>
+ <include name="ant-*.jar"/>
+ </fileset>
+ </path>
+ <mkdir dir="${ro.build}/jspc"/>
+ <jspc srcdir="${build.stage_web}" destdir="${ro.build}/jspc"
+ package="test" verbose="9">
+ <include name="**/*.jsp" />
+ <classpath refid="jasper.path"/>
+ </jspc>
+ <mkdir dir="${ro.build}/jspc.classes"/>
+ <javac source="1.4" debug="true" srcdir="${ro.build}/jspc"
+ destdir="${ro.build}/jspc.classes" fork="true">
+ <classpath refid="jasper.path"/>
+ </javac>
+
+</target>
+
+<!-- ********************************************************************* -->
+<!-- HSQLDB start, init and stop targets -->
+<!-- ********************************************************************* -->
+
+<target name="init-hsqldb" description=
+ "Initializes HSQLDB on port 3219 by running Roller's droptable and createdb scripts">
+ &custom-post-dbtest;
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="./build/roller/WEB-INF/dbscripts/droptables.sql" onerror="continue"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="./build/roller/WEB-INF/dbscripts/hsql/createdb.sql"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+ &custom-pre-dbtest;
+</target>
+
+<target name="start-hsqldb" description="Starts HSQLDB database on port 3219">
+ <java classname="org.hsqldb.Server" fork="yes" classpath="./tools/buildtime/hsqldb.jar">
+ <arg value="-database"/>
+ <arg value="${build.tests}/testdb"/>
+ <arg value="-port"/>
+ <arg value="3219"/>
+ </java>
+</target>
+
+<target name="stop-hsqldb" description="Drop tables and stops the HSQLDB database on port 3219">
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ src="./build/roller/WEB-INF/dbscripts/droptables.sql"
+ classpath="${ro.tools}/buildtime/hsqldb.jar" />
+ <sql driver="org.hsqldb.jdbcDriver"
+ url="jdbc:hsqldb:hsql://localhost:3219"
+ userid="sa" password=""
+ classpath="${ro.tools}/buildtime/hsqldb.jar" >
+ SHUTDOWN
+ </sql>
+</target>
+
+</project>
Added: incubator/roller/trunk/contrib/ant.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/ant.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/ant.properties (added)
+++ incubator/roller/trunk/contrib/ant.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1,4 @@
+build.debug=on
+build.deprecation=false
+ro.build=../build
+ro.tools=../tools
Added: incubator/roller/trunk/contrib/build.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/build.xml?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/build.xml (added)
+++ incubator/roller/trunk/contrib/build.xml Wed Jun 8 20:18:46 2005
@@ -0,0 +1 @@
+<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY properties SYSTEM "file:../properties.xmlf">
]>
<project name="contrib" default="build-contrib">
<!-- Bring in properties.xml -->
&properties;
<target name="build-contrib" description="Build Roller contributions">
<echo message="making ${ro.build}/compile_contrib" />
<mkdir dir="${ro.build}/compile_contrib" />
<ant dir="plugins" inheritAll="false" />
<copy todir="${ro.build}/roller/WEB-INF/lib" flatten="true">
<fileset dir="./" includes="**/*.jar"/>
</copy>
<!-- Jar up web classes -->
<jar jarfile="${ro.build}/roller/WEB-INF/lib/rollercontrib.jar">
<fileset dir="${ro.build}/compile_contrib" />
</jar>
</target>
</project>
\ No newline at end of file
Added: incubator/roller/trunk/contrib/lib/JSPWiki.jar
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/lib/JSPWiki.jar?rev=189695&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/contrib/lib/JSPWiki.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/contrib/lib/jython.jar
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/lib/jython.jar?rev=189695&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/contrib/lib/jython.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/contrib/lib/radeox.jar
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/lib/radeox.jar?rev=189695&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/contrib/lib/radeox.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/contrib/lib/textile4j-1.20.jar
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/lib/textile4j-1.20.jar?rev=189695&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/roller/trunk/contrib/lib/textile4j-1.20.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/roller/trunk/contrib/plugins/ant.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/plugins/ant.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/plugins/ant.properties (added)
+++ incubator/roller/trunk/contrib/plugins/ant.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1,4 @@
+build.debug=on
+build.deprecation=false
+ro.build=../../build
+ro.tools=../../tools
Added: incubator/roller/trunk/contrib/plugins/build.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/plugins/build.xml?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/plugins/build.xml (added)
+++ incubator/roller/trunk/contrib/plugins/build.xml Wed Jun 8 20:18:46 2005
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE project [
+ <!ENTITY properties SYSTEM "file:../../properties.xmlf">
+]>
+<project name="plugins" default="plugins">
+
+ <!-- Bring in properties.xml -->
+ &properties;
+
+ <target name="plugins" description="Build Roller Page Plugins">
+ <javac debug="${build.debug}"
+ srcdir="./src"
+ destdir="${ro.build}/compile_contrib">
+ <classpath>
+ <path refid="presentation.path"/>
+ <path location="${ro.build}/compile_beans"/>
+ <path location="${ro.build}/compile_web"/>
+ <fileset dir="../lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ </javac>
+ <copy todir="${ro.build}/compile_contrib">
+ <fileset dir="./src" includes="**/*.properties"/>
+ </copy>
+ </target>
+</project>
\ No newline at end of file
Added: incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/AcronymsPlugin.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/AcronymsPlugin.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/AcronymsPlugin.java (added)
+++ incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/AcronymsPlugin.java Wed Jun 8 20:18:46 2005
@@ -0,0 +1,234 @@
+/*
+ * Filename: AcronymsPlugin.java
+ *
+ * Created on 22-Jun-04
+ */
+package org.roller.presentation.velocity.plugins.acronyms;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.velocity.context.Context;
+import org.roller.RollerException;
+import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
+import org.roller.pojos.PageData;
+import org.roller.pojos.WeblogEntryData;
+import org.roller.pojos.WebsiteData;
+import org.roller.presentation.RollerRequest;
+import org.roller.presentation.velocity.PagePlugin;
+
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Adds full text to pre-defined acronyms.
+ *
+ * Example: HTML would become <acronym title="Hyper Text Markup Language">HTML</acronym>
+ *
+ * @author <a href="mailto:molen@mail.com">Jaap van der Molen</a>
+ * @version $Revision: 1.3 $
+ */
+public class AcronymsPlugin implements PagePlugin
+{
+ /**
+ * Logger
+ */
+ private static final Log mLogger = LogFactory.getLog(AcronymsPlugin.class);
+
+ /**
+ * Name of this Plugin.
+ */
+ protected String name = "Acronyms";
+ protected String description = "Expands acronyms defined in _acronym page. " +
+ "Example: definition 'HTML=Hyper Text Markup Language' " +
+ "becomes <acronym title='Hyper Text Markup Language'>HTML</acronym>. " +
+ "You must create an " +
+ "<a href='page.do?method=editPages&rmik=tabbedmenu.website.pages'>" +
+ "_acronym page</a> to use Acronyms.";
+
+ /**
+ * Constructor
+ */
+ public AcronymsPlugin()
+ {
+ super();
+ mLogger.debug("AcronymsPlugin instantiated.");
+ }
+
+ /**
+ * @see org.roller.presentation.velocity.PagePlugin#init(org.roller.presentation.RollerRequest, org.apache.velocity.context.Context)
+ */
+ public void init(RollerRequest rreq, Context ctx) throws RollerException
+ {
+ if (mLogger.isDebugEnabled()) {
+ mLogger.debug("init( rreq = "+rreq+", ctx = "+ctx+" )");
+ }
+ }
+
+ /**
+ * Look for any _acronyms Page and parse it into Properties.
+ * @param website
+ * @return
+ * @throws RollerException
+ */
+ private Properties loadAcronyms(WebsiteData website)
+ {
+ Properties acronyms = new Properties();
+ try
+ {
+ UserManager userMgr = RollerFactory.getRoller().getUserManager();
+ PageData acronymsPage = userMgr.getPageByName(
+ website, "_acronyms");
+ if (acronymsPage != null)
+ {
+ acronyms = parseAcronymPage(acronymsPage, acronyms);
+ }
+ }
+ catch (RollerException e)
+ {
+ // not much we can do about it
+ mLogger.warn(e);
+ }
+ return acronyms;
+ }
+
+ /**
+ * @see org.roller.presentation.velocity.PagePlugin#render(org.roller.pojos.WeblogEntryData, boolean)
+ */
+ public String render(WeblogEntryData entry, boolean skipFlag)
+ {
+ String text = entry.getText();
+
+ if (mLogger.isDebugEnabled()) {
+ mLogger.debug("render( entry = "+entry.getId()+", skipFlag = "+skipFlag+" )");
+ }
+
+ /*
+ * Get acronyms Properties.
+ */
+ Properties acronyms = loadAcronyms(entry.getWebsite());
+ mLogger.debug("acronyms.size()=" + acronyms.size());
+ if (acronyms.size() == 0)
+ {
+ return text;
+ }
+
+ /*
+ * Compile the user's acronyms into RegEx patterns.
+ */
+ Pattern[] acronymPatterns = new Pattern[acronyms.size()];
+ String[] acronymTags = new String[acronyms.size()];
+ int count = 0;
+ for (Iterator iter = acronyms.keySet().iterator(); iter.hasNext();)
+ {
+ String acronym = (String) iter.next();
+ acronymPatterns[count] = Pattern.compile("\\b" + acronym + "\\b");
+ mLogger.debug("match '" + acronym + "'");
+ acronymTags[count] =
+ "<acronym title=\""
+ + acronyms.getProperty(acronym)
+ + "\">"
+ + acronym
+ + "</acronym>";
+ count++;
+ }
+
+ // check skipper
+ /* I don't think this Plugin should skip. -Lance
+ if (skipFlag)
+ {
+ return text;
+ }
+ */
+
+ // if there are none, no work to do
+ if (acronymPatterns == null || acronymPatterns.length == 0) {
+ return text;
+ }
+
+ return matchAcronyms(text, acronymPatterns, acronymTags);
+ }
+
+ /**
+ * Without Website cannot lookup _acronyms page.
+ * @see org.roller.presentation.velocity.PagePlugin#render(java.lang.String)
+ */
+ public String render(String text)
+ {
+ return text;
+ }
+
+ /**
+ * @return this Page Plugin's name
+ */
+ public String toString()
+ {
+ return name;
+ }
+
+ /**
+ * Iterates through the acronym properties and replaces matching
+ * acronyms in the entry text with acronym html-tags.
+ *
+ * @param text entry text
+ * @param acronyms user provided set of acronyms
+ * @return entry text with acronym explanations
+ */
+ private String matchAcronyms(String text, Pattern[] acronymPatterns, String[] acronymTags)
+ {
+ if (mLogger.isDebugEnabled()) {
+ mLogger.debug("matchAcronyms("+text+")");
+ }
+
+ Matcher matcher = null;
+ for (int i=0; i<acronymPatterns.length; i++)
+ {
+ matcher = acronymPatterns[i].matcher(text);
+ text = matcher.replaceAll(acronymTags[i]);
+ }
+ return text;
+ }
+
+ /**
+ * Parse the Template of the provided PageData and turns it
+ * into a <code>Properties</code> collection.
+ *
+ * @param acronymPage
+ * @return acronym properties (key = acronym, value= full text), empty if Template is empty
+ */
+ private Properties parseAcronymPage(PageData acronymPage, Properties acronyms)
+ {
+ String rawAcronyms = acronymPage.getTemplate();
+
+ if (mLogger.isDebugEnabled())
+ {
+ mLogger.debug("parsing _acronyms template: \n'"+rawAcronyms+"'");
+ }
+
+ String regex = "\n"; // end of line
+ String[] lines = rawAcronyms.split(regex);
+
+ if (lines != null)
+ {
+ for (int i = 0; i < lines.length; i++)
+ {
+ int index = lines[i].indexOf('=');
+ if (index > 0)
+ {
+ String key = lines[i].substring(0, index).trim();
+ String value =
+ lines[i].substring(index + 1, lines[i].length()).trim();
+ acronyms.setProperty(key, value);
+ }
+ }
+ }
+
+ return acronyms;
+ }
+
+ public String getName() { return name; }
+ public String getDescription() { return StringEscapeUtils.escapeJavaScript(description); }
+}
Added: incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/BookmarkPlugin.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/BookmarkPlugin.java?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/BookmarkPlugin.java (added)
+++ incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/BookmarkPlugin.java Wed Jun 8 20:18:46 2005
@@ -0,0 +1,175 @@
+/*
+ * Created on Nov 2, 2003
+ *
+ */
+package org.roller.presentation.velocity.plugins.bookmarks;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.velocity.context.Context;
+import org.roller.RollerException;
+import org.roller.model.BookmarkManager;
+import org.roller.model.RollerFactory;
+import org.roller.pojos.BookmarkData;
+import org.roller.pojos.FolderData;
+import org.roller.pojos.WeblogEntryData;
+import org.roller.presentation.RollerRequest;
+import org.roller.presentation.velocity.PagePlugin;
+import java.util.regex.PatternSyntaxException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * @author lance
+ * @author Anil Gangolli (significant modifications)
+ */
+public class BookmarkPlugin implements PagePlugin
+{
+ protected String name = "Bookmark Linker";
+ protected String description = "Automatically uses your Bookmarks to " +
+ "create links. Simply use the Name of a Bookmark and it will be " +
+ "converted into a hyperlink using the Bookmark's URL.";
+
+ private static Log mLogger =
+ LogFactory.getFactory().getInstance(BookmarkPlugin.class);
+
+ public BookmarkPlugin()
+ {
+ mLogger.debug("BookmarkPlugin instantiated.");
+ }
+
+ public String toString() { return name; }
+
+ /* (non-Javadoc)
+ * @see org.roller.presentation.velocity.PagePlugin#init(org.roller.presentation.RollerRequest, org.apache.velocity.context.Context)
+ */
+ public void init(RollerRequest rreq, Context ctx) throws RollerException
+ {
+ }
+
+ /*
+ * Without Website cannot lookup Folders & Bookmarks
+ * (non-Javadoc)
+ * @see org.roller.presentation.velocity.PagePlugin#render(java.lang.String)
+ */
+ public String render(String text)
+ {
+ return text;
+ }
+
+ public String render(WeblogEntryData entry, boolean skipFlag)
+ {
+ String text = entry.getText();
+ try
+ {
+ BookmarkManager bMgr = RollerFactory.getRoller().getBookmarkManager();
+ FolderData rootFolder = bMgr.getRootFolder(entry.getWebsite());
+ text = matchBookmarks(text, rootFolder);
+ text = lookInFolders(text, rootFolder.getFolders());
+ }
+ catch (RollerException e)
+ {
+ // nothing much I can do, go with default "Weblog" value
+ // could be RollerException or NullPointerException
+ mLogger.warn(e);
+ }
+ return text;
+ }
+
+ /**
+ * Recursively travel down Folder tree, attempting
+ * to match up Bookmarks in each Folder.
+ *
+ * @param text
+ * @param folders
+ * @return
+ */
+ private String lookInFolders(String text, Collection folders)
+ {
+ Iterator it = folders.iterator();
+ while (it.hasNext())
+ {
+ FolderData folder = (FolderData)it.next();
+ text = matchBookmarks(text, folder);
+
+ try
+ {
+ if (!folder.getFolders().isEmpty())
+ {
+ lookInFolders(text, folder.getFolders());
+ }
+ }
+ catch (RollerException e)
+ {
+ mLogger.error("Error getting child Folders");
+ }
+ }
+ return text;
+ }
+
+ private String matchBookmarks(String text, FolderData folder)
+ {
+ Iterator bookmarks = folder.getBookmarks().iterator();
+ String workingText = text;
+ while (bookmarks.hasNext())
+ {
+ BookmarkData bookmark = (BookmarkData)bookmarks.next();
+ String bkDescription = bookmark.getDescription();
+ if (bkDescription == null) bkDescription = "";
+ String bookmarkLink = "<a href=\"" +
+ bookmark.getUrl() + "\" title=\"" +
+ bkDescription + "\">" +
+ bookmark.getName() + "</a>";
+ try
+ {
+ // Replace all occurrences of bookmark name that don't occur within the bounds of an anchor tag
+ // Notes:
+ // - use reluctant quantifiers on the tags to avoid gobbling more than desired
+ // - use non-capturing groups for boundaries to avoid replacing the boundary as well as the bookmark name.
+ // - we depend on the numbering of the specific groups in this expression in the replacement code below.
+ // TODO: should escape the bookmark name
+ String regEx = "(<a(?:\\s.*?)??/>)|(<a(?:\\s.*?)??>)|(</a(?:\\s.*?)??>)|(?:\\b)(" + bookmark.getName() + ")(?:\\b)";
+ Matcher m = Pattern.compile(regEx).matcher(workingText);
+ StringBuffer textBuf = new StringBuffer(workingText.length());
+ int inLink = 0;
+ while (m.find())
+ {
+ if (m.group(1) != null)
+ {
+ // self-closed anchor tag <a ... /> -- ignore
+ }
+ else if (m.group(2) != null)
+ {
+ // matched opening anchor tag <a ...>
+ inLink++;
+ }
+ else if (m.group(3) != null)
+ {
+ // closing anchor tag </a>, but ignore nonmatching ones
+ if (inLink > 0) inLink--;
+ }
+ else if (m.group(4) != null)
+ {
+ // matched the bookmark -- replace, but only if not within a link tag.
+ if (inLink == 0) m.appendReplacement(textBuf, bookmarkLink);
+ }
+ // Any remaining case indicates a bug. One could add an else with assertion here. Conservatively don't substitute.
+ }
+ m.appendTail(textBuf);
+ workingText = textBuf.toString();
+ }
+ catch (PatternSyntaxException e)
+ {
+ // Can happen since we don't escape pattern the bookmark name to protect pattern characters.
+ mLogger.warn("Failed to substitute for bookmark [" + bookmark.getName() + "] due to regular expression characters.");
+ }
+ }
+ return workingText.toString();
+ }
+
+ public String getName() { return name; }
+ public String getDescription() { return StringEscapeUtils.escapeJavaScript(description); }
+}
Added: incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/package.html
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/package.html?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/package.html (added)
+++ incubator/roller/trunk/contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/package.html Wed Jun 8 20:18:46 2005
@@ -0,0 +1,9 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title></title>
+</head>
+<body>
+PagePlugin: Bookmark substitution in weblog entries.<br>
+</body>
+</html>