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/10/21 23:46:28 UTC

svn commit: r327589 [8/72] - in /incubator/roller/branches/roller_1.x: ./ 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/...

Added: incubator/roller/branches/roller_1.x/metadata/database/096-to-097-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/096-to-097-migration-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/096-to-097-migration-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/096-to-097-migration-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,54 @@
+
+create table if not exists comment (
+    id      varchar(255) not null primary key,
+    entryid varchar(255) not null,
+    name    varchar(255) null,
+    email   varchar(255) null,
+    url     varchar(255) null,
+    content @TEXT_SQL_TYPE@ null,
+    posttime timestamp   not null
+);
+create index comment_entryid_index on comment( entryid );
+
+
+-- Referer tracks URLs that refer to websites and entries
+create table referer (
+    id        varchar(48) not null primary key,
+    websiteid varchar(48) not null,
+    entryid   varchar(48),
+    datestr   varchar(10),
+    refurl    varchar(255) not null,    
+    refpermalink varchar(255),    
+    reftime   timestamp,
+    requrl    varchar(255),    
+    title     varchar(255),    
+    excerpt   @TEXT_SQL_TYPE@ null,
+    dayhits   integer default 0 not null,
+    totalhits integer default 0 not null,    
+    visible   @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    duplicate @BOOLEAN_SQL_TYPE_FALSE@ not null
+);
+create index referer_websiteid_index on referer( websiteid );
+create index referer_entryid_index on referer( entryid );
+
+  
+alter table website add column (allowcomments @BOOLEAN_SQL_TYPE_TRUE@ not null);
+
+alter table website add column (ignorewords @TEXT_SQL_TYPE@ null);
+
+alter table comment add constraint comment_entryid_fk 
+    foreign key ( entryid ) references weblogentry( id );
+
+alter table folder add constraint folder_websiteid_fk 
+    foreign key ( websiteid ) references website( id );
+    
+alter table folder add constraint folder_entryid_fk 
+    foreign key ( entryid ) references weblogentry( id );
+    
+alter table referer add constraint referer_websiteid_fk 
+    foreign key ( websiteid ) references website( id );
+    
+alter table referer add constraint referer_entryid_fk 
+    foreign key ( entryid ) references weblogentry( id );
+
+  
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/database/097-to-098-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/097-to-098-migration-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/097-to-098-migration-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/097-to-098-migration-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,80 @@
+-- Eliminate use of reserved keywords
+
+-- role -> userrole
+CREATE TABLE temprole AS SELECT * FROM role;
+DROP TABLE role;
+CREATE table userrole (
+    id               varchar(48) not null primary key,
+    rolename         varchar(255) not null,
+    username         varchar(255) not null,
+    userid           varchar(48) not null
+);
+INSERT INTO userrole 
+    (id, rolename, username, userid) 
+    SELECT id, role, username, userid 
+        FROM temprole;
+ALTER table userrole add constraint userrole_userid_fk 
+    foreign key ( userid ) references rolleruser( id );
+create index userrole_userid_index on userrole( userid );
+
+
+-- password -> passphrase
+CREATE TABLE tempuser AS SELECT * FROM rolleruser;
+DROP TABLE rolleruser;  
+CREATE table rolleruser ( 
+    id              varchar(48) not null primary key,
+    username        varchar(255) not null,
+    passphrase      varchar(255) not null,
+    fullname        varchar(255) not null,
+    emailaddress    varchar(255) not null,
+    datecreated     timestamp not null,
+    userenabled     @BOOLEAN_SQL_TYPE_TRUE@ not null
+);
+-- Populate the new table, filling datecreated using least pubtime of any of the user's weblog entries.
+INSERT INTO rolleruser
+  (id, username, passphrase, fullname, emailaddress, datecreated)
+  SELECT t.id, t.username, t.password, t.fullname, t.emailaddress, MIN(e.pubtime)
+    FROM tempuser t, website w, weblogentry e
+    WHERE t.id = w.userid and w.id = e.websiteid
+    GROUP BY t.id;
+
+ALTER table rolleruser add constraint rolleruser_username_uq unique ( username );
+
+
+-- page -> webpage
+CREATE TABLE temppage AS SELECT * FROM page;
+DROP TABLE page;  
+create table webpage AS SELECT * FROM temppage;
+
+
+-- Drop bad indexes: some were poorly named, others just wrong
+-- these may or may not exist
+-- alter table website drop index userid_index;
+-- alter table folder drop index webisteid_index;
+-- alter table folder drop index parentid_index;
+-- alter table bookmark drop index folderid_index;
+-- alter table weblogcategory drop index websiteid_index;
+-- alter table weblogentry drop index websiteid_index;
+-- alter table weblogentry drop index categoryid_index;
+-- alter table newsfeed drop index websiteid_index;
+-- alter table comment drop index entryid_index;
+-- alter table referer drop index websiteid_index;
+-- alter table referer drop index entryid_index;
+
+-- Add good indexes to replace the bad ones
+create index website_userid_index on website( userid );
+create index folder_websiteid_index on folder( websiteid );
+create index folder_parentid_index on folder( parentid );
+create index bookmark_folderid_index on bookmark( folderid );
+create index weblogcategory_websiteid_index on weblogcategory( websiteid );
+create index weblogentry_websiteid_index on weblogentry( websiteid );
+create index weblogentry_categoryid_index on weblogentry( categoryid );
+create index newsfeed_websiteid_index on newsfeed( websiteid );
+create index comment_entryid_index on comment( entryid );
+create index referer_websiteid_index on referer( websiteid );
+create index referer_entryid_index on referer( entryid );
+
+-- Only use these when you are certain of the upgrade
+-- drop table temprole;
+-- drop table tempuser;
+-- drop table temppage;

Added: incubator/roller/branches/roller_1.x/metadata/database/098-to-099-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/098-to-099-migration-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/098-to-099-migration-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/098-to-099-migration-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,5 @@
+-- add new attribute to WeblogEntry
+alter table weblogentry add column (autoformatentry BOOLEAN_SQL_TYPE not null);
+
+-- add new attribute to Website
+alter table website add column (autoformatdefault BOOLEAN_SQL_TYPE not null);
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/database/098-to-100-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/098-to-100-migration-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/098-to-100-migration-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/098-to-100-migration-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,107 @@
+-- add new attribute to Comment
+alter table comment add column notify @BOOLEAN_SQL_TYPE@;
+alter table comment add column spam @BOOLEAN_SQL_TYPE@;
+alter table comment add column remotehost varchar(128);
+update comment set spam=@BOOLEAN_FALSE@, notify=@BOOLEAN_FALSE@, posttime=posttime;
+
+-- add new attribute to WeblogEntry 
+alter table weblogentry add column link varchar(255);
+alter table weblogentry add column plugins varchar(255);
+alter table weblogentry add column allowcomments @BOOLEAN_SQL_TYPE@;
+alter table weblogentry add column commentdays integer;
+alter table weblogentry add column rightToLeft @BOOLEAN_SQL_TYPE@;
+alter table weblogentry add column pinnedtomain @BOOLEAN_SQL_TYPE@;
+update weblogentry set pubtime=pubtime, updatetime=updatetime, allowcomments=@BOOLEAN_TRUE@, pinnedtomain=@BOOLEAN_FALSE@;
+
+-- add new attributes to Website
+alter table website add column editortheme varchar(255);
+alter table website add column locale varchar(20);
+alter table website add column timezone varchar(50);
+alter table website add column defaultcatid varchar(48);
+alter table website add column defaultplugins varchar(255);
+alter table website add column emailcomments @BOOLEAN_SQL_TYPE@;
+alter table website add column emailfromaddress varchar(255);
+alter table website add column isenabled @BOOLEAN_SQL_TYPE@;
+update website set emailcomments=@BOOLEAN_FALSE@, isenabled=@BOOLEAN_TRUE@, locale='en', timezone='America/New_York';
+
+-- reset possibly bad bloggercategoryid settings, repairIfNeeded will fix them
+update website set bloggercatid=null;
+
+-- weblog categories are now hierarchical
+create table weblogcategoryassoc (
+    id               varchar(48) not null primary key,
+    categoryid       varchar(48) not null,
+    ancestorid       varchar(40),
+    relation         varchar(20) not null
+);
+create index weblogcategoryassoc_categoryid_index on weblogcategoryassoc( categoryid );
+create index weblogcategoryassoc_ancestorid_index on weblogcategoryassoc( ancestorid );
+create index weblogcategoryassoc_relation_index on weblogcategoryassoc( relation );
+
+create table folderassoc (
+    id               varchar(48) not null primary key,
+    folderid         varchar(48) not null,
+    ancestorid       varchar(40),
+    relation         varchar(20) not null
+);
+create index folderassoc_folderid_index on folderassoc( folderid );
+create index folderassoc_ancestorid_index on folderassoc( ancestorid );
+
+-- Configuration options for Roller, should only ever be one row
+create table rollerconfig (
+    id              varchar(48) not null primary key,
+    sitedescription varchar(255) null,
+    sitename        varchar(255) null,
+    emailaddress    varchar(255) null,
+    absoluteurl     varchar(255) null,
+    adminusers      varchar(255) null,
+    encryptpasswords @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    algorithm       varchar(10) null,
+    newuserallowed  @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    editorpages     varchar(255) null,
+    userthemes      varchar(255) not null,
+    indexdir        varchar(255) null,
+    memdebug           @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    autoformatcomments @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    escapecommenthtml @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    emailcomments     @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    enableaggregator  @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    enablelinkback    @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    rsscachetime    integer default 3000 not null,
+    rssusecache     @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    uploadallow     varchar(255) null,
+    uploadforbid    varchar(255) null,
+    uploadenabled   @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    uploaddir       varchar(255) not null,
+    uploadpath      varchar(255) not null,
+    uploadmaxdirmb  decimal(5,2) default 4.0 not null,
+    uploadmaxfilemb decimal(5,2) default 1.5 not null,
+    dbversion       varchar(10) null
+);
+alter table rollerconfig add column refspamwords @TEXT_SQL_TYPE@;
+update rollerconfig set refspamwords='';
+ 
+-- new usercookie table for remember me feature
+create table usercookie (
+    id              varchar(48) not null primary key,
+    username        varchar(255) not null,
+    cookieid        varchar(100) not null,
+    datecreated     timestamp not null
+);
+create index usercookie_username_index on usercookie( username );
+create index usercookie_cookieid_index on usercookie( cookieid );
+
+create index rolleruser_userenabled_index on rolleruser( userenabled );
+
+create index referer_refurl_index on referer( refurl@INDEXSIZE@ );
+create index referer_requrl_index on referer( requrl@INDEXSIZE@ );
+create index referer_datestr_index on referer( datestr );
+create index referer_refpermalink_index on referer( refpermalink@INDEXSIZE@ );
+create index referer_duplicate_index on referer( duplicate );
+
+create index webpage_name_index on webpage( name@INDEXSIZE@ );
+create index webpage_link_index on webpage( link@INDEXSIZE@ );
+
+create index website_isenabled_index on website( isenabled );
+
+

Added: incubator/roller/branches/roller_1.x/metadata/database/100-to-110-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/100-to-110-migration-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/100-to-110-migration-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/100-to-110-migration-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,12 @@
+
+create table entryattribute (
+    id       varchar(48) not null primary key,
+    entryid  varchar(48) not null,
+    name     varchar(255) not null,
+    value    text not null
+);
+create index entryattribute_entryid_index on entryattribute( entryid );
+alter table entryattribute add constraint entryattribute_name_uq unique ( entryid, name );
+
+alter table entryattribute add constraint att_entryid_fk
+    foreign key ( entryid ) references weblogentry( id );

Added: incubator/roller/branches/roller_1.x/metadata/database/110-to-120-migration-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/110-to-120-migration-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/110-to-120-migration-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/110-to-120-migration-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,130 @@
+create table roller_properties (
+    name     varchar(255) not null primary key,
+    value    @TEXT_SQL_TYPE@
+);
+
+create table rag_group_subscription (
+    id               varchar(48) not null primary key,
+    group_id         varchar(48) not null,
+    subscription_id  varchar(48) not null
+);
+create index rag_group_subscription_gid on rag_group_subscription(group_id@INDEXSIZE@); 
+create index rag_group_subscription_sid on rag_group_subscription(subscription_id@INDEXSIZE@); 
+
+create table rag_config (
+    id               varchar(48) not null primary key,
+    default_group_id varchar(48),
+    title            varchar(255) not null,
+    description      varchar(255),
+    site_url         varchar(255),
+    output_dir       varchar(255),
+    cache_dir        varchar(255) not null,
+    template_dir     varchar(255),
+    main_page        varchar(255),
+    admin_name       varchar(255),
+    admin_email      varchar(255) not null,
+    group_page       varchar(255),
+    proxy_host       varchar(255),
+    proxy_port       integer default -1
+);
+
+create table rag_group (
+    id               varchar(48) not null primary key,
+    handle           varchar(255) not null,
+    title            varchar(255) not null,
+    description      varchar(255),
+    cat_restriction  @TEXT_SQL_TYPE@,
+    group_page       varchar(255),
+    max_page_entries integer default 30,
+    max_feed_entries integer default 30
+);
+alter table rag_group add constraint rag_group_handle_uq unique ( handle@INDEXSIZE@ );
+create index rag_group_handle on rag_group(handle@INDEXSIZE@); 
+
+create table rag_subscription (
+    id               varchar(48) not null primary key,
+    title            varchar(255),
+    feed_url         varchar(255) not null,
+    site_url         varchar(255),
+    author           varchar(255),
+    last_updated     timestamp,
+    inbound_links    integer default -1,
+    inbound_blogs    integer default -1
+);
+alter table rag_subscription add constraint rag_feed_url_uq unique ( feed_url@INDEXSIZE_LARGE@ );
+create index rag_subscription_feed_url on rag_subscription(feed_url@INDEXSIZE@); 
+
+create table rag_entry (
+    id               varchar(48) not null primary key,
+    subscription_id  varchar(48) not null,
+    handle           varchar(255),
+    title            varchar(255),
+    guid             varchar(255),
+    permalink        @TEXT_SQL_TYPE@ not null,
+    author           varchar(255),
+    content          @TEXT_SQL_TYPE@,
+    categories       @TEXT_SQL_TYPE@,
+    published        timestamp not null,
+    updated          timestamp    
+);
+create index rag_entry_sid on rag_entry(subscription_id@INDEXSIZE@);
+
+
+-- Ping Feature Tables
+
+create table pingtarget (
+    id           varchar(48) not null primary key,
+    name         varchar(255) not null, -- short descriptive name of the ping target
+    pingurl      varchar(255) not null,  -- URL to receive the ping
+    websiteid    varchar(48) null, -- if not null, this is a custom target defined by the associated website
+    condition    integer default 0 not null, -- condition code
+    lastsuccess  timestamp null -- last successful use
+);
+create index pingtarget_websiteid_index on pingtarget( websiteid );
+
+-- auto ping configurations
+create table autoping (
+    id            varchar(48) not null primary key,
+    websiteid     varchar(48) not null, -- fk reference to website for which this auto ping configuration applies
+    pingtargetid  varchar(48) not null -- fk reference to the ping target to be pinged when the website changes
+);
+create index autoping_websiteid_index on autoping( websiteid );
+create index autoping_pingtargetid_index on autoping( pingtargetid );
+
+create table pingcategory (
+    id            varchar(48) not null primary key,
+    autopingid  varchar(48) not null, -- fk reference to auto ping configuration
+    categoryid    varchar(48) not null -- fk reference to category
+);
+create index pingcategory_autopingid_index on pingcategory( autopingid );
+create index pingcategory_categoryid_index on pingcategory( categoryid );
+
+create table pingqueueentry (
+    id             varchar(48) not null primary key,
+    entrytime      timestamp not null, -- timestamp of original entry onto the ping queue
+    pingtargetid   varchar(48) not null,  -- weak fk reference to ping target (not constrained)
+    websiteid      varchar(48) not null,  -- weak fk reference to website originating the ping (not constrained)
+    attempts       integer not null -- number of ping attempts that have been made for this entry
+);
+create index pingqueueentry_entrytime_index on pingqueueentry( entrytime );
+create index pingqueueentry_pingtargetid_index on pingqueueentry( pingtargetid );
+create index pingqueueentry_websiteid_index on pingqueueentry( websiteid );
+
+-- and Ping constraints
+
+alter table pingtarget add constraint pingtarget_websiteid_fk
+    foreign key (websiteid) references website(id);
+
+alter table autoping add constraint autoping_websiteid_fk
+    foreign key (websiteid) references website(id);
+
+alter table autoping add constraint autoping_pingtargetid_fk
+    foreign key (pingtargetid) references pingtarget(id);
+
+alter table pingcategory add constraint pingcategory_autopingid_fk
+    foreign key (autopingid) references autoping(id);
+
+alter table pingcategory add constraint pingcategory_categoryid_fk
+    foreign key (categoryid) references weblogcategory(id);
+
+ 

Added: incubator/roller/branches/roller_1.x/metadata/database/check.bat
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/check.bat?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/check.bat (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/check.bat Fri Oct 21 14:27:36 2005
@@ -0,0 +1,4 @@
+set _cp=..\lib\rollerbeans.jar
+set _cp=%_cp%;..\lib\commons-logging.jar
+set _cp=%_cp%;%CATALINA_HOME%\common\lib\mysql-connector-java-3.0.14-production-bin.jar
+java -classpath %_cp%; org.roller.business.utils.ConsistencyCheck %1 %2

Added: incubator/roller/branches/roller_1.x/metadata/database/check.sh
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/check.sh?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/check.sh (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/check.sh Fri Oct 21 14:27:36 2005
@@ -0,0 +1,11 @@
+#!/bin/sh
+if [ "$JAVA_HOME" = "" ] ; then
+	echo You must set JAVA_HOME to point to your Java JDK install directory
+	exit 1
+fi
+_JDBCJAR=${CATALINA_HOME}/common/lib/mysql-connector-java-3.0.15-ga-bin.jar
+_CP=../lib/rollerbeans.jar
+_CP=${_CP}:../lib/commons-logging.jar
+_CP=${_CP}:${_JDBCJAR}
+
+${JAVA_HOME}/bin/java -classpath ${_CP} org.roller.business.utils.ConsistencyCheck $1 $2 $3 $4 

Added: incubator/roller/branches/roller_1.x/metadata/database/createdb-raw.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/createdb-raw.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/createdb-raw.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/createdb-raw.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,453 @@
+
+-- Run this script to create the Roller database tables in your database.
+-- Make sure you run the correct version of this script.
+--
+-- * For MySQL run the script createdb.sql found in the mysql directory.
+-- * For PostgreSQL run the script createdb.sql found in the postgresql directory.
+-- * For HSQLDB run the script createdb.sql found in the hsqldb directory.
+-- 
+-- For those who grabbed Roller source from CVS, don't try to run the script 
+-- named createdb-raw.sql, it is the source from which the above scripts are 
+-- created.
+
+-- *****************************************************
+-- Create the tables and indices
+
+create table rolleruser (
+    id              varchar(48) not null primary key,
+    username        varchar(255) not null,
+    passphrase      varchar(255) not null,
+    fullname        varchar(255) not null,
+    emailaddress    varchar(255) not null,
+    datecreated     timestamp not null
+);
+alter table rolleruser add constraint rolleruser_username_uq unique ( username@INDEXSIZE@ );
+
+create table userrole (
+    id               varchar(48) not null primary key,
+    rolename         varchar(255) not null,
+    username         varchar(255) not null,
+    userid           varchar(48) not null
+);
+create index userrole_userid_index on userrole( userid );
+create index userrole_username_index on userrole( username@INDEXSIZE@ );
+
+create table usercookie (
+    id              varchar(48) not null primary key,
+    username        varchar(255) not null,
+    cookieid        varchar(100) not null,
+    datecreated     timestamp not null
+);
+create index usercookie_username_index on usercookie( username@INDEXSIZE@ );
+create index usercookie_cookieid_index on usercookie( cookieid@INDEXSIZE@ );
+
+create table webpage (
+    id              varchar(48)  not null primary key,
+    name            varchar(255)  not null,
+    description     varchar(255)  null,
+    link            varchar(255)  null,
+    websiteid       varchar(255)  not null,
+    template        @TEXT_SQL_TYPE@ not null,
+    updatetime      timestamp     not null
+);
+create index webpage_name_index on webpage( name@INDEXSIZE@ );
+create index webpage_link_index on webpage( link@INDEXSIZE@ );
+create index webpage_id_index on webpage( websiteid );
+
+create table website (
+    id                varchar(48) not null primary key,
+    name              varchar(255) not null,
+    description       varchar(255) not null,
+    userid            varchar(48) not null,
+    defaultpageid     varchar(48) default 0 not null,
+    weblogdayid       varchar(48) not null,
+    ignorewords       @TEXT_SQL_TYPE@,
+    enablebloggerapi  @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    editorpage        varchar(255) null,
+    bloggercatid      varchar(48) null,
+    defaultcatid      varchar(48) null,
+    allowcomments     @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    emailcomments     @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    emailfromaddress  varchar(255) null,
+    editortheme       varchar(255) null,
+    locale            varchar(20) null,
+    timezone          varchar(50) null,
+    defaultplugins    varchar(255) null,
+    pinnedtomain      @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    isenabled         @BOOLEAN_SQL_TYPE_TRUE@ not null
+);
+create index website_id_index on website( id );
+create index website_userid_index on website( userid );
+create index website_isenabled_index on website( isenabled );
+
+create table folder (
+    id               varchar(48) not null primary key,
+    name             varchar(255) not null,
+    description      varchar(255) null,
+    websiteid        varchar(48) not null,
+    parentid        varchar(48)
+);
+create index folder_websiteid_index on folder( websiteid );
+
+create table folderassoc (
+    id               varchar(48) not null primary key,
+    folderid         varchar(48) not null,
+    ancestorid       varchar(40),
+    relation         varchar(20) not null
+);
+create index folderassoc_folderid_index on folderassoc( folderid );
+create index folderassoc_ancestorid_index on folderassoc( ancestorid );
+create index folderassoc_relation_index on folderassoc( relation );
+
+create table bookmark (
+    id               varchar(48) not null primary key,
+    folderid         varchar(48) not null,
+    name             varchar(255) not null,
+    description      varchar(255) null,
+    url              varchar(255) not null,
+    weight           integer default 0 not null,
+    priority         integer default 100 not null,
+    image            varchar(255) null,
+    feedurl          varchar(255) null
+);
+create index bookmark_folderid_index on bookmark( folderid );
+
+
+create table weblogcategory (
+    id               varchar(48)  not null primary key,
+    name             varchar(255) not null,
+    description      varchar(255) null,
+    websiteid        varchar(48)  not null,
+    image            varchar(255) null
+);
+create index weblogcategory_websiteid_index on weblogcategory( websiteid );
+-- alter table weblogcategory add unique category_nameparentid_uq (parentid, name(20));
+
+create table weblogcategoryassoc (
+    id               varchar(48) not null primary key,
+    categoryid       varchar(48) not null,
+    ancestorid       varchar(40),
+    relation         varchar(20) not null
+);
+create index weblogcategoryassoc_categoryid_index on weblogcategoryassoc( categoryid );
+create index weblogcategoryassoc_ancestorid_index on weblogcategoryassoc( ancestorid );
+create index weblogcategoryassoc_relation_index on weblogcategoryassoc( relation );
+
+create table weblogentry (
+    id              varchar(48)  not null primary key,
+    anchor          varchar(255)  not null,
+    title           varchar(255)  not null,
+    text            @TEXT_SQL_TYPE@ not null,
+    pubtime         timestamp     not null,
+    updatetime      timestamp     not null,
+    websiteid       varchar(48)  not null,
+    categoryid      varchar(48)  not null,
+    publishentry    @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    link            varchar(255) null,
+    plugins         varchar(255) null,
+    allowcomments   @BOOLEAN_SQL_TYPE_FALSE@ not null, 
+    commentdays     integer default 7 not null,
+    rightToLeft     @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    pinnedtomain     @BOOLEAN_SQL_TYPE_FALSE@ not null
+);
+create index weblogentry_websiteid_index on weblogentry( websiteid );
+create index weblogentry_categoryid_index on weblogentry( categoryid );
+create index weblogentry_pubtime_index on weblogentry( pubtime,publishentry,websiteid );
+create index weblogentry_pinnedtomain_index on weblogentry(pinnedtomain);
+create index weblogentry_publishentry_index on weblogentry(publishentry);
+
+create table newsfeed (
+    id              varchar(48) not null primary key,
+    name            varchar(255) not null,
+    description     varchar(255) not null,
+    link            varchar(255) not null,
+    websiteid       varchar(48) not null
+);
+create index newsfeed_websiteid_index on newsfeed( websiteid );
+
+
+create table comment (
+    id      varchar(48) not null primary key,
+    entryid varchar(48) not null,
+    name    varchar(255) null,
+    email   varchar(255) null,
+    url     varchar(255) null,
+    content @TEXT_SQL_TYPE@ null,
+    posttime timestamp   not null,
+    spam    @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    notify  @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    remotehost varchar(128) null
+);
+create index comment_entryid_index on comment( entryid );
+
+-- Ping Feature Tables
+
+create table pingtarget (
+    id           varchar(48) not null primary key,
+    name         varchar(255) not null, -- short descriptive name of the ping target
+    pingurl      varchar(255) not null,  -- URL to receive the ping
+    websiteid    varchar(48) null, -- if not null, this is a custom target defined by the associated website
+    condition    integer default 0 not null, -- condition code
+    lastsuccess  timestamp null -- last successful use
+);
+create index pingtarget_websiteid_index on pingtarget( websiteid );
+
+-- auto ping configurations
+create table autoping (
+    id            varchar(48) not null primary key,
+    websiteid     varchar(48) not null, -- fk reference to website for which this auto ping configuration applies
+    pingtargetid  varchar(48) not null -- fk reference to the ping target to be pinged when the website changes
+);
+create index autoping_websiteid_index on autoping( websiteid );
+create index autoping_pingtargetid_index on autoping( pingtargetid );
+
+create table pingcategory (
+    id            varchar(48) not null primary key,
+    autopingid  varchar(48) not null, -- fk reference to ping configuration
+    categoryid    varchar(48) not null -- fk reference to category
+);
+create index pingcategory_autopingid_index on pingcategory( autopingid );
+create index pingcategory_categoryid_index on pingcategory( categoryid );
+
+create table pingqueueentry (
+    id             varchar(48) not null primary key,
+    entrytime      timestamp not null, -- timestamp of original entry onto the ping queue
+    pingtargetid   varchar(48) not null,  -- weak fk reference to ping target (not constrained)
+    websiteid      varchar(48) not null,  -- weak fk reference to website originating the ping (not constrained)
+    attempts       integer not null -- number of ping attempts that have been made for this entry
+);
+create index pingqueueentry_entrytime_index on pingqueueentry( entrytime );
+create index pingqueueentry_pingtargetid_index on pingqueueentry( pingtargetid );
+create index pingqueueentry_websiteid_index on pingqueueentry( websiteid );
+
+
+-- Referer tracks URLs that refer to websites and entries
+create table referer (
+    id        varchar(48) not null primary key,
+    websiteid varchar(48) not null,
+    entryid   varchar(48),
+    datestr   varchar(10),
+    refurl    varchar(255) not null,
+    refpermalink varchar(255),
+    reftime   timestamp,
+    requrl    varchar(255),
+    title     varchar(255),
+    excerpt   @TEXT_SQL_TYPE@ null,
+    dayhits   integer default 0 not null,
+    totalhits integer default 0 not null,
+    visible   @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    duplicate @BOOLEAN_SQL_TYPE_FALSE@ not null
+);
+create index referer_websiteid_index on referer( websiteid );
+create index referer_entryid_index on referer( entryid );
+create index referer_refurl_index on referer( refurl@INDEXSIZE@ );
+create index referer_requrl_index on referer( requrl@INDEXSIZE@ );
+create index referer_datestr_index on referer( datestr );
+create index referer_refpermalink_index on referer( refpermalink@INDEXSIZE@ );
+create index referer_duplicate_index on referer( duplicate );
+
+-- Configuration options for Roller, should only ever be one row
+create table rollerconfig (
+    id              varchar(48) not null primary key,
+    sitedescription varchar(255) null,
+    sitename        varchar(255) null,
+    emailaddress    varchar(255) null,
+    absoluteurl     varchar(255) null,
+    adminusers      varchar(255) null,
+    encryptpasswords @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    algorithm       varchar(10) null,
+    newuserallowed  @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    editorpages     varchar(255) null,
+    userthemes      varchar(255) not null,
+    indexdir        varchar(255) null,
+    memdebug        @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    autoformatcomments @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    escapecommenthtml @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    emailcomments   @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    enableaggregator @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    enablelinkback  @BOOLEAN_SQL_TYPE_FALSE@ not null,
+    rsscachetime    integer default 3000 not null,
+    rssusecache     @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    uploadallow     varchar(255) null,
+    uploadforbid    varchar(255) null,
+    uploadenabled   @BOOLEAN_SQL_TYPE_TRUE@ not null,
+    uploaddir       varchar(255) not null,
+    uploadpath      varchar(255) not null,
+    uploadmaxdirmb  decimal(5,2) default 4.0 not null,
+    uploadmaxfilemb decimal(5,2) default 1.5 not null,
+    dbversion       varchar(10) null,
+    refspamwords    @TEXT_SQL_TYPE@
+);
+
+create table roller_properties (
+    name     varchar(255) not null primary key,
+    value    @TEXT_SQL_TYPE@
+);
+
+-- Entry attribute: metadata for weblog entries
+create table entryattribute (
+    id       varchar(48) not null primary key,
+    entryid  varchar(48) not null,
+    name     varchar(255) not null,
+    value    @TEXT_SQL_TYPE@ not null
+);
+create index entryattribute_entryid_index on entryattribute( entryid );
+alter table entryattribute add constraint entryattribute_name_uq unique ( entryid, name@INDEXSIZE@ );
+
+create table rag_group_subscription (
+    id               varchar(48) not null primary key,
+    group_id         varchar(48) not null,
+    subscription_id  varchar(48) not null
+);
+create index rag_group_subscription_gid on rag_group_subscription(group_id@INDEXSIZE@); 
+create index rag_group_subscription_sid on rag_group_subscription(subscription_id@INDEXSIZE@); 
+
+create table rag_config (
+    id               varchar(48) not null primary key,
+    default_group_id varchar(48),
+    title            varchar(255) not null,
+    description      varchar(255),
+    site_url         varchar(255),
+    output_dir       varchar(255),
+    cache_dir        varchar(255) not null,
+    template_dir     varchar(255),
+    main_page        varchar(255),
+    admin_name       varchar(255),
+    admin_email      varchar(255) not null,
+    group_page       varchar(255),
+    proxy_host       varchar(255),
+    proxy_port       integer default -1
+);
+
+create table rag_group (
+    id               varchar(48) not null primary key,
+    handle           varchar(255) not null,
+    title            varchar(255) not null,
+    description      varchar(255),
+    cat_restriction  @TEXT_SQL_TYPE@,
+    group_page       varchar(255),
+    max_page_entries integer default 30,
+    max_feed_entries integer default 30
+);
+alter table rag_group add constraint rag_group_handle_uq unique ( handle@INDEXSIZE@ );
+create index rag_group_handle on rag_group(handle@INDEXSIZE@); 
+
+create table rag_subscription (
+    id               varchar(48) not null primary key,
+    title            varchar(255),
+    feed_url         varchar(255) not null,
+    site_url         varchar(255),
+    author           varchar(255),
+    last_updated     timestamp,
+    inbound_links    integer default -1,
+    inbound_blogs    integer default -1
+);
+alter table rag_subscription add constraint rag_feed_url_uq unique ( feed_url@INDEXSIZE_LARGE@ );
+create index rag_subscription_feed_url on rag_subscription(feed_url@INDEXSIZE@); 
+
+create table rag_entry (
+    id               varchar(48) not null primary key,
+    subscription_id  varchar(48) not null,
+    handle           varchar(255),
+    title            varchar(255),
+    guid             varchar(255),
+    permalink        @TEXT_SQL_TYPE@ not null,
+    author           varchar(255),
+    content          @TEXT_SQL_TYPE@,
+    categories       @TEXT_SQL_TYPE@,
+    published        timestamp not null,
+    updated          timestamp    
+);
+create index rag_entry_sid on rag_entry(subscription_id@INDEXSIZE@); 
+
+-- *****************************************************
+-- Now add the foreign key relationships
+
+-- user, role and website
+
+alter table website add constraint website_userid_fk
+    foreign key ( userid ) references rolleruser ( id );
+
+alter table userrole add constraint userrole_userid_fk
+    foreign key ( userid ) references rolleruser( id );
+
+-- page, entry, category, comment
+
+alter table webpage add constraint weblogpage_websiteid_fk
+    foreign key ( websiteid ) references website( id );
+
+alter table weblogentry add constraint weblogentry_websiteid_fk
+    foreign key ( websiteid ) references website( id );
+
+alter table weblogentry add constraint weblogentry_categoryid_fk
+    foreign key ( categoryid ) references weblogcategory( id );
+
+alter table weblogcategory add constraint weblogcategory_websiteid_fk
+    foreign key ( websiteid ) references website( id );
+
+alter table comment add constraint comment_entryid_fk
+    foreign key ( entryid ) references weblogentry( id );
+
+alter table entryattribute add constraint att_entryid_fk
+    foreign key ( entryid ) references weblogentry( id );
+
+-- referer
+
+alter table referer add constraint referer_entryid_fk
+    foreign key ( entryid ) references weblogentry( id );
+
+alter table referer add constraint referer_websiteid_fk
+    foreign key ( websiteid ) references website( id );
+
+-- folder and bookmark
+
+alter table folder add constraint folder_websiteid_fk
+    foreign key ( websiteid ) references website( id );
+
+-- alter table folder add constraint folder_parentid_fk
+--     foreign key ( parentid ) references folder( id );
+
+alter table bookmark add constraint bookmark_folderid_fk
+    foreign key ( folderid ) references folder( id );
+
+-- newsfeed
+
+alter table newsfeed add constraint newsfeed_websiteid_fk
+    foreign key ( websiteid ) references website( id );
+
+-- pingtarget, autoping, pingcategory
+
+alter table pingtarget add constraint pingtarget_websiteid_fk
+    foreign key (websiteid) references website(id);
+
+alter table autoping add constraint autoping_websiteid_fk
+    foreign key (websiteid) references website(id);
+
+alter table autoping add constraint autoping_pingtargetid_fk
+    foreign key (pingtargetid) references pingtarget(id);
+
+alter table pingcategory add constraint pingcategory_autopingid_fk
+    foreign key (autopingid) references autoping(id);
+
+alter table pingcategory add constraint pingcategory_categoryid_fk
+    foreign key (categoryid) references weblogcategory(id);
+
+
+-- THE FOLLOWING CONSTRAINTS CAN NOT BE SUPPORTED FOR IMPORTING new-user.xml
+-- alter table website add constraint website_defaultpageid_fk foreign key ( defaultpageid ) references webpage ( id );
+-- alter table website add constraint website_weblogdayid_fk foreign key ( weblogdayid ) references webpage ( id );
+-- alter table webpage add constraint webpage_websiteid_fk foreign key ( websiteid ) references website( id );
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: incubator/roller/branches/roller_1.x/metadata/database/db_hsql.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/db_hsql.properties?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/db_hsql.properties (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/db_hsql.properties Fri Oct 21 14:27:36 2005
@@ -0,0 +1,8 @@
+TEXT_SQL_TYPE=longvarchar
+BOOLEAN_SQL_TYPE_FALSE=bit default 0
+BOOLEAN_SQL_TYPE_TRUE=bit default 1
+BOOLEAN_SQL_TYPE=bit
+BOOLEAN_FALSE=0
+BOOLEAN_TRUE=1
+INDEXSIZE= 
+INDEXSIZE_LARGE=

Added: incubator/roller/branches/roller_1.x/metadata/database/db_mysql.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/db_mysql.properties?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/db_mysql.properties (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/db_mysql.properties Fri Oct 21 14:27:36 2005
@@ -0,0 +1 @@
+TEXT_SQL_TYPE=text
BOOLEAN_SQL_TYPE_FALSE=bit default 0
BOOLEAN_SQL_TYPE_TRUE=bit default 1
BOOLEAN_SQL_TYPE=bit
BOOLEAN_FALSE=0
BOOLEAN_TRUE=1
INDEXSIZE=(40)
INDEXSIZE_LARGE=(100)
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/database/db_postgresql.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/db_postgresql.properties?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/db_postgresql.properties (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/db_postgresql.properties Fri Oct 21 14:27:36 2005
@@ -0,0 +1,8 @@
+TEXT_SQL_TYPE=text
+BOOLEAN_SQL_TYPE_FALSE=boolean default false
+BOOLEAN_SQL_TYPE_TRUE=boolean default true
+BOOLEAN_SQL_TYPE=boolean
+BOOLEAN_FALSE=false
+BOOLEAN_TRUE=true
+INDEXSIZE=
+INDEXSIZE_LARGE=
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/database/droptables.sql
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/droptables.sql?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/droptables.sql (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/droptables.sql Fri Oct 21 14:27:36 2005
@@ -0,0 +1,26 @@
+drop table pingqueueentry;
+drop table pingcategory;
+drop table autoping;
+drop table pingtarget;
+drop table referer;
+drop table newsfeed;
+drop table weblogcategoryassoc;
+drop table bookmark;
+drop table comment;
+drop table entryattribute;
+drop table weblogentry;
+drop table weblogcategory;
+drop table folder;
+drop table folderassoc;
+drop table webpage;
+drop table website;
+drop table userrole;
+drop table rollerconfig;
+drop table rolleruser; 
+drop table usercookie; 
+drop table roller_properties;
+drop table rag_config;
+drop table rag_group;
+drop table rag_subscription;
+drop table rag_entry;
+drop table rag_group_subscription;
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/database/hibernate/hibernate.cfg.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/hibernate/hibernate.cfg.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/hibernate/hibernate.cfg.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/hibernate/hibernate.cfg.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+        "-//Hibernate/Hibernate Configuration DTD 2.0//EN"
+        "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
+<hibernate-configuration>
+    <session-factory name="java:comp/env/hibernate/SessionFactory">
+    
+        <!-- By default Roller uses a JNDI DataSource and the MySQLDialect -->
+        <property name="show_sql">false</property>
+        <property name="connection.datasource">java:comp/env/jdbc/rollerdb</property>
+        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
+        <!--
+        If you want to use HSQLDB or PostgreSQL, then use the right dialect   
+        <property name="dialect">net.sf.hibernate.dialect.HQLDBDialect</property> 
+        <property name="dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>
+        -->
+
+        <!--
+        Examples for configuring Hibernate to use the JDBC Driver Manager
+        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
+        <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost:3219</property>
+        <property name="hibernate.connection.username">sa</property>
+        <property name="hibernate.connection.password"></property>
+        <property name="hibernate.dialect">net.sf.hibernate.dialect.HSQLDialect</property>
+
+        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
+        <property name="hibernate.connection.url">
+                        jdbc:mysql://localhost/roller?user=roller&amp;password=tiger</property>
+        <property name="hibernate.connection.username">roller</property>
+        <property name="hibernate.connection.password">tiger</property>
+        <property name="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</property>
+
+        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
+        <property name="hibernate.connection.url">jdbc:postgresql://localhost/rollerdb</property>
+        <property name="hibernate.connection.username">scott</property>
+        <property name="hibernate.connection.password">tiger</property>
+        <property name="hibernate.dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>
+        -->
+
+        <mapping resource="org/roller/business/HitCountData.hbm.xml" />
+        <mapping resource="org/roller/pojos/BookmarkData.hbm.xml" />
+        <mapping resource="org/roller/pojos/CommentData.hbm.xml" />
+        <mapping resource="org/roller/pojos/EntryAttributeData.hbm.xml" />
+        <mapping resource="org/roller/pojos/FolderAssoc.hbm.xml" />
+        <mapping resource="org/roller/pojos/FolderData.hbm.xml" />
+        <mapping resource="org/roller/pojos/WeblogTemplate.hbm.xml" />
+        <mapping resource="org/roller/pojos/PingCategoryRestrictionData.hbm.xml" />
+        <mapping resource="org/roller/pojos/AutoPingData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PingQueueEntryData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PingTargetData.hbm.xml" />
+        <mapping resource="org/roller/pojos/RefererData.hbm.xml" />
+        <mapping resource="org/roller/pojos/RoleData.hbm.xml" />
+        <mapping resource="org/roller/pojos/RollerConfigData.hbm.xml" />
+        <mapping resource="org/roller/pojos/UserData.hbm.xml" />
+        <mapping resource="org/roller/pojos/UserCookieData.hbm.xml" />
+        <mapping resource="org/roller/pojos/WeblogCategoryData.hbm.xml" />
+        <mapping resource="org/roller/pojos/WeblogCategoryAssoc.hbm.xml" />
+        <mapping resource="org/roller/pojos/WeblogEntryData.hbm.xml" />
+        <mapping resource="org/roller/pojos/WebsiteData.hbm.xml" />
+        <mapping resource="org/roller/pojos/RollerPropertyData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PlanetConfigData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PlanetGroupData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PlanetEntryData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PlanetSubscriptionData.hbm.xml" />
+        <mapping resource="org/roller/pojos/PlanetGroupSubscriptionAssoc.hbm.xml" />
+
+    </session-factory>
+</hibernate-configuration>

Added: incubator/roller/branches/roller_1.x/metadata/database/rollerdb.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/rollerdb.properties?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/rollerdb.properties (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/rollerdb.properties Fri Oct 21 14:27:36 2005
@@ -0,0 +1,21 @@
+
+# Encryption algorythm to be used (don't change this)
+algorithm=SHA
+
+# Example config for MySQL
+driverClassName=com.mysql.jdbc.Driver
+connectionUrl=jdbc:mysql://localhost/roller_db_10?autoReconnect=true&user=scott&password=tiger&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
+
+# Example config for PostgreSQL 
+#userName=scott
+#password=tiger
+#driverClassName=org.postgresql.Driver
+#connectionUrl=jdbc:postgresql://localhost/rollerdb
+
+# Exmaple config for HSQLDB
+#driverClassName=org.hsqldb.jdbcDriver
+#connectionUrl=jdbc:hsqldb:hsql://localhost:8802
+
+# The "src." prefix is for the source database in SyncUpgrade098Xto1000.java
+#src.driverClassName=com.mysql.jdbc.Driver
+#src.ConnectionUrl=jdbc:mysql://localhost/roller_db_10?autoReconnect=true&user=scott&password=tiger&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8

Added: incubator/roller/branches/roller_1.x/metadata/database/rollerpw.bat
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/rollerpw.bat?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/rollerpw.bat (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/rollerpw.bat Fri Oct 21 14:27:36 2005
@@ -0,0 +1,4 @@
+set _cp=..\lib\rollerbeans.jar
+set _cp=%_cp%;..\lib\commons-logging.jar
+set _cp=%_cp%;%CATALINA_HOME%\common\lib\mysql-connector-java-3.0.14-production-bin.jar
+java -classpath %_cp%; org.roller.business.utils.PasswordUtility %1 %2 %3

Added: incubator/roller/branches/roller_1.x/metadata/database/rollerpw.sh
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/database/rollerpw.sh?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/database/rollerpw.sh (added)
+++ incubator/roller/branches/roller_1.x/metadata/database/rollerpw.sh Fri Oct 21 14:27:36 2005
@@ -0,0 +1,14 @@
+#!/bin/sh
+if [ "$JAVA_HOME" = "" ] ; then
+	echo You must set JAVA_HOME to point to your Java JDK install directory
+	exit 1
+fi
+
+_JDBCJAR=${CATALINA_HOME}/common/lib/mysql-connector.jar
+#_JDBCJAR=${CATALINA_HOME}/common/lib/postgresql.jar
+#_JDBCJAR=${CATALINA_HOME}/common/lib/hsqldb.jar
+_CP=../lib/rollerbeans.jar
+_CP=${_CP}:../lib/commons-logging.jar
+_CP=${_CP}:${_JDBCJAR}
+
+${JAVA_HOME}/bin/java -classpath ${_CP} org.roller.business.utils.PasswordUtility $1 $2 $3

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/dataobject-custom.j
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/dataobject-custom.j?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/dataobject-custom.j (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/dataobject-custom.j Fri Oct 21 14:27:36 2005
@@ -0,0 +1,17 @@
+
+   /**
+	* Setter is needed in RollerImpl.storeValueObject()
+    */
+   public void setData( org.roller.model.ValueObject otherData )
+   {
+    <XDtEjbPersistent:forAllPersistentFields>
+     <XDtEjbDataObj:ifIsAggregate>
+      this.<XDtMethod:propertyName/> = new <XDtEjbPersistent:pushClass value="return-type"></XDtEjbPersistent:pushClass><XDtEjbDataObj:dataObjectClass/><XDtEjbPersistent:popClass></XDtEjbPersistent:popClass>( otherData.<XDtMethod:propertyName/> );
+     </XDtEjbDataObj:ifIsAggregate>
+
+     <XDtEjbDataObj:ifIsNotAggregate>
+      this.<XDtMethod:propertyName/> = ((<XDtClass:classOf><XDtEjbDataObj:dataObjectClass/></XDtClass:classOf>)otherData).<XDtMethod:propertyName/>;
+     </XDtEjbDataObj:ifIsNotAggregate>
+    </XDtEjbPersistent:forAllPersistentFields>
+   }
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/ejb-resource-ref-0.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/ejb-resource-ref-0.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/ejb-resource-ref-0.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/ejb-resource-ref-0.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,3 @@
+
+RESIN_RESOURCE_REFS
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/error-pages.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/error-pages.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/error-pages.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/error-pages.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,22 @@
+
+<error-page>
+    <exception-type>java.lang.Exception</exception-type>
+    <location>/error.jsp</location>
+</error-page>
+
+<error-page>
+    <error-code>403</error-code>
+    <location>/error403.jsp</location>
+</error-page>
+
+<error-page>
+    <error-code>404</error-code>
+    <location>/error404.jsp</location>
+</error-page>
+
+<error-page>
+    <error-code>400</error-code>
+    <location>/login-redirect.jsp</location>
+</error-page>
+
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/filter-mappings.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/filter-mappings.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/filter-mappings.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/filter-mappings.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,168 @@
+
+<!-- *********************************************************
+    Filter mappings - order IS important here.  Since there is
+    no way to declare order in xdoclet, we must do it by hand.
+    ******************************************************* -->
+
+<!--
+     NOTE: Wherever "dispatcher" elements are specified in the filter mappings, they are
+     required for Servlet API 2.4 containers, such as Tomcat 5+ and Resin 3+, but should be
+     commented out for Servlet API 2.3 containers, like Tomcat 4.x and Resin 2.x.
+-->
+
+<!--
+<filter-mapping>
+    <filter-name>UrlRewriteFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+</filter-mapping>
+-->
+
+<!-- Ensures character encoding set to UTF-8 and JSTL and Struts locales are in sync.
+     Note: Any filters preceding this one MUST not cause request parsing. -->
+<filter-mapping>
+    <filter-name>CharEncodingFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+</filter-mapping>
+
+<!-- Map everything to the PersistenceSessionFilter.
+     NOTE: Any filters preceding this one MUST NOT use persistence sessions.-->
+<filter-mapping>
+    <filter-name>PersistenceSessionFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+</filter-mapping>
+
+<!-- Use RequestFilter on all requests except for Newsfeed requests -->
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>/page/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>/comments/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>/preview/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>/flavor/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>/foaf/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>/xmlrpc/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RequestFilter</filter-name>
+    <url-pattern>*.do</url-pattern>
+</filter-mapping>
+
+<filter-mapping>
+    <filter-name>RefererFilter</filter-name>
+    <url-pattern>/page/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RefererFilter</filter-name>
+    <url-pattern>/comments/*</url-pattern>
+</filter-mapping>
+
+<!-- RememberMe Filter -->
+<filter-mapping>
+    <filter-name>loginFilter</filter-name>
+    <url-pattern>/login.jsp</url-pattern>
+    <dispatcher>REQUEST</dispatcher>
+    <dispatcher>FORWARD</dispatcher>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>loginFilter</filter-name>
+    <url-pattern>/logout-redirect.jsp</url-pattern>
+</filter-mapping>
+
+<!--
+Currently we only support If-Modified-Since using weblog last pub
+time, so the only place we should us it is on the RSS feed.
+-->
+<filter-mapping>
+    <filter-name>IfModifiedFilter</filter-name>
+    <url-pattern>/rss/*</url-pattern>
+</filter-mapping>
+
+<filter-mapping>
+    <filter-name>BreadCrumbFilter</filter-name>
+    <url-pattern>*.do</url-pattern>
+</filter-mapping>
+
+<filter-mapping>
+    <filter-name>PageGzipFilter</filter-name>
+    <url-pattern>/page/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>PageGzipFilter</filter-name>
+    <url-pattern>/planet.do</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>PageGzipFilter</filter-name>
+    <url-pattern>/main.do</url-pattern>
+</filter-mapping>
+
+<filter-mapping>
+    <filter-name>RssGzipFilter</filter-name>
+    <url-pattern>/rss/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssGzipFilter</filter-name>
+    <url-pattern>/flavor/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssGzipFilter</filter-name>
+    <url-pattern>/foaf/*</url-pattern>
+</filter-mapping>
+
+<!-- Cache filters should be last in line -->
+
+<filter-mapping>
+    <filter-name>RssCacheFilter</filter-name>
+    <url-pattern>/rss</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssCacheFilter</filter-name>
+    <url-pattern>/rss/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssCacheFilter</filter-name>
+    <url-pattern>/planetrss</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssCacheFilter</filter-name>
+    <url-pattern>/flavor</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssCacheFilter</filter-name>
+    <url-pattern>/flavor/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>RssCacheFilter</filter-name>
+    <url-pattern>/foaf/*</url-pattern>
+</filter-mapping>
+
+<filter-mapping>
+    <filter-name>PageCacheFilter</filter-name>
+    <url-pattern>/page/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>PageCacheFilter</filter-name>
+    <url-pattern>/main.do</url-pattern>
+</filter-mapping>
+<filter-mapping>
+    <filter-name>PageCacheFilter</filter-name>
+    <url-pattern>/planet.do</url-pattern>
+</filter-mapping>
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/filters.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/filters.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/filters.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/filters.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,29 @@
+
+<filter>
+    <filter-name>RssGzipFilter</filter-name>
+    <filter-class>org.roller.presentation.filters.CompressionFilter</filter-class>
+</filter>
+
+<filter>
+    <filter-name>RssCacheFilter</filter-name>
+    <filter-class>org.roller.presentation.pagecache.PageCacheFilter</filter-class>
+    <init-param>
+        <param-name>size</param-name>
+        <param-value>100</param-value>
+        <description><![CDATA[Number of pages to keep in cache]]></description>
+    </init-param>
+    <init-param>
+        <param-name>timeout</param-name>
+        <param-value>1800</param-value>
+        <description><![CDATA[Page Cache timeout interval in seconds]]></description>
+    </init-param>
+</filter>
+
+<!--
+<filter>
+    <filter-name>UrlRewriteFilter</filter-name>
+    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
+</filter>
+-->
+
+<!-- begin xdoclet generated Filter declarations -->
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/global-forwards.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/global-forwards.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/global-forwards.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/global-forwards.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,53 @@
+<global-forwards>
+<forward name="access-denied"          path="/denied.jsp"/>
+<forward name="error"                  path="/error.jsp"/>
+<forward name="login-redirect"         path="/login-redirect.jsp"/>
+<forward name="logout-redirect"        path="/logout-redirect.jsp"/>
+<!-- unprotected actions -->
+<forward name="page"                   path="/page"/>
+<forward name="main"                   path="/main.do"/>
+<forward name="home.page"              path="/main.do"/>
+<forward name="createUser"             path="/user.do?method=createUser"/>
+<forward name="registerUser"           path="/user.do?method=registerUser"/>
+<!--  editor and admin role actions -->
+<forward name="bookmarks"              path="/editor/bookmarks.do?method=selectFolder"/>
+<forward name="comment"                path="/editor/comment.do?method=edit" />
+<forward name="comments.delete"        path="/editor/comment.do?method=delete"/>
+<forward name="categories"             path="/editor/categories.do?method=selectCategory"/>
+<forward name="exportEntries"          path="/editor/exportEntries.do?method=edit"/>
+<forward name="exportEntries.done"     path="/editor/exportEntries.do?method=unspecified"/>
+<forward name="importBookmarks"        path="/editor/importBookmarks.do"/>
+<forward name="importEntries"          path="/editor/importEntries.do?method=edit"/>
+<forward name="maintenance"            path="/editor/maintenance.do" />
+<forward name="editPages"              path="/editor/page.do?method=editPages"/>
+<forward name="editPage"               path="/editor/page.do?method=edit"/>
+<forward name="editUser"               path="/editor/user.do?method=edit"/>
+<forward name="removePage"             path="/editor/page.do?method=remove"/>
+<forward name="removePage.ok"          path="/editor/page.do?method=removeOk"/>
+<forward name="referers"               path="/editor/referers.do"/>
+<forward name="pingSetup"              path="/editor/pingSetup.do" />
+<forward name="customPingTargets"      path="/editor/customPingTargets.do" />
+<forward name="editTheme"              path="/editor/themeEditor.do?method=edit"/>
+<forward name="trackback"              path="/editor/trackback.do?method=send"/>
+<forward name="toggleLinkback"         path="/editor/toggleLinkback.do"/>
+<forward name="uploadFiles"            path="/editor/uploadFiles.do"/>
+<forward name="editUser"               path="/editor/user.do?method=edit"/>
+<forward name="weblogEdit"             path="/editor/weblog.do?method=edit"/>
+<forward name="weblogCreate"           path="/editor/weblog.do?method=create"/>
+<forward name="flushCache"             path="/editor/weblog.do?method=flushCache"/>
+<forward name="weblogQuery"            path="/editor/weblogQuery.do?method=query"/>
+<forward name="editWebsite"            path="/editor/website.do?method=edit"/>
+<!-- admin role only actions -->
+<forward name="addUser"                path="/admin/user.do?method=add"/>
+<forward name="adminUser"              path="/admin/user.do?method=edit"/>
+<forward name="rollerConfig"           path="/admin/rollerConfig.do?method=edit"/>
+<forward name="commonPingTargets"      path="/admin/commonPingTargets.do"/>
+
+<forward name="planet"                   path="/planet.do"/>
+<forward name="planetConfig"             path="/admin/planetConfig.do?method=getConfig"/>
+<forward name="planetSubscriptions"      path="/admin/planetSubscriptions.do?method=getSubscriptions"/>
+<forward name="planetGroups"             path="/admin/planetGroups.do?method=getGroups"/>
+<forward name="planetGroupSubscriptions" path="/admin/planetGroupSubscriptions.do?method=getGroupSubscriptions"/>
+
+</global-forwards>
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/pojo_wrapper.xdt
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/pojo_wrapper.xdt?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/pojo_wrapper.xdt (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/pojo_wrapper.xdt Fri Oct 21 14:27:36 2005
@@ -0,0 +1,101 @@
+package <XDtPackage:packageName/>.wrapper;
+
+import <XDtClass:fullClassName/>;
+
+
+/**
+ * Generated wrapper for class: <XDtClass:fullClassName/>
+ */
+public class <XDtClass:className/>Wrapper {
+
+    // keep a reference to the wrapped pojo
+    private <XDtClass:className/> pojo = null;
+
+    // this is private so that we can force the use of the .wrap(pojo) method
+    private <XDtClass:className/>Wrapper(<XDtClass:className/> toWrap) {
+        this.pojo = toWrap;
+    }
+
+    // wrap the given pojo if it is not null
+    public static <XDtClass:className/>Wrapper wrap(<XDtClass:className/> toWrap) {
+        if(toWrap != null)
+            return new <XDtClass:className/>Wrapper(toWrap);
+
+        return null;
+    }
+
+<XDtMethod:forAllMethods superclasses="true">
+  <XDtMethod:ifHasMethodTag tagName="roller.wrapPojoMethod">
+    <XDtMethod:ifMethodTagValueEquals tagName="roller.wrapPojoMethod" paramName="type" value="pojo">
+
+    /**
+     * pojo method tagged with @roller.wrapPojoMethod type="pojo"
+     *
+     * This method returns another pojo so we need to wrap the returned pojo.
+     */
+    <XDtMethod:modifiers/> <XDtPackage:packageOf><XDtMethod:methodType/></XDtPackage:packageOf>.<XDtClass:classOf><XDtMethod:methodType/></XDtClass:classOf>Wrapper <XDtMethod:methodName/>(<XDtParameter:parameterList/>)
+        <XDtMethod:exceptionList/>
+    {
+        return <XDtPackage:packageOf><XDtMethod:methodType/></XDtPackage:packageOf>.<XDtClass:classOf><XDtMethod:methodType/></XDtClass:classOf>Wrapper.wrap(this.pojo.<XDtMethod:methodName/>(<XDtParameter:parameterList includeDefinition="false" />));
+    }
+
+    </XDtMethod:ifMethodTagValueEquals>
+
+    <XDtMethod:ifMethodTagValueEquals tagName="roller.wrapPojoMethod" paramName="type" value="pojo-collection">
+
+    /**
+     * pojo method tagged with @roller.wrapPojoMethod type="pojo-collection"
+     *
+     * This method returns a collection of pojos so we need to wrap
+     * each pojo that is part of the collection.
+     */
+    <XDtMethod:modifiers/> java.util.List <XDtMethod:methodName/>(<XDtParameter:parameterList/>)
+        <XDtMethod:exceptionList/>
+    {
+        <XDtMethod:methodType/> initialCollection = this.pojo.<XDtMethod:methodName/>(<XDtParameter:parameterList includeDefinition="false" />);
+
+        // iterate through and wrap
+        // we force the use of an ArrayList because it should be good enough to cover
+        // for any Collection type we encounter.
+        java.util.ArrayList wrappedCollection = new java.util.ArrayList(initialCollection.size());
+        java.util.Iterator it = initialCollection.iterator();
+        int i = 0;
+        while(it.hasNext()) {
+            wrappedCollection.add(i, <XDtPackage:packageOf><XDtMethod:methodTagValue tagName="roller.wrapPojoMethod" paramName="class"/></XDtPackage:packageOf>.<XDtClass:classOf><XDtMethod:methodTagValue tagName="roller.wrapPojoMethod" paramName="class"/></XDtClass:classOf>Wrapper.wrap((<XDtMethod:methodTagValue tagName="roller.wrapPojoMethod" paramName="class"/>) it.next()));
+            i++;
+        }
+
+        return wrappedCollection;
+    }
+
+    </XDtMethod:ifMethodTagValueEquals>
+
+    <XDtMethod:ifMethodTagValueEquals tagName="roller.wrapPojoMethod" paramName="type" value="simple">
+
+    /**
+     * pojo method tagged with @roller.wrapPojoMethod type="simple"
+     *
+     * Simply returns the same value that the pojo would have returned.
+     */
+    <XDtMethod:modifiers/> <XDtMethod:methodType/> <XDtMethod:methodName/>(<XDtParameter:parameterList/>)
+        <XDtMethod:exceptionList/>
+    {   
+        return this.pojo.<XDtMethod:methodName/>(<XDtParameter:parameterList includeDefinition="false" />);
+    }
+    </XDtMethod:ifMethodTagValueEquals>
+    
+  </XDtMethod:ifHasMethodTag>
+</XDtMethod:forAllMethods>
+
+
+    /**
+     * this is a special method to access the original pojo
+     * we don't really want to do this, but it's necessary
+     * because some parts of the rendering process still need the
+     * orginal pojo object
+     */
+    public <XDtClass:fullClassName/> getPojo() {
+        return this.pojo;
+    }
+
+}

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/servlet-mappings.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/servlet-mappings.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/servlet-mappings.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/servlet-mappings.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,7 @@
+
+    <servlet-mapping>
+        <servlet-name>action</servlet-name>
+        <url-pattern>*.do</url-pattern>
+    </servlet-mapping>
+
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/servlets.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/servlets.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/servlets.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/servlets.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,20 @@
+
+<!-- The Struts Servlet -->
+<servlet>
+
+	<servlet-name>action</servlet-name>
+	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
+
+	<init-param>
+		<param-name>config</param-name>
+		<param-value>/WEB-INF/struts-config.xml</param-value>
+	</init-param>
+
+	<init-param>
+		<param-name>validate</param-name>
+		<param-value>true</param-value>
+	</init-param>
+
+	<load-on-startup>2</load-on-startup>
+
+</servlet>

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-actions.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-actions.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-actions.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-actions.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,4 @@
+<!-- 
+<action path="/jcaptcha"
+type="com.octo.captcha.module.struts.image.RenderImageCaptchaAction" />
+-->
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-message-resources.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-message-resources.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-message-resources.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-message-resources.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1 @@
+    <message-resources parameter="ApplicationResources"/>
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-plugins.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-plugins.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-plugins.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/struts-plugins.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,10 @@
+
+<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
+    <set-property 
+        property="pathnames" 
+        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
+</plug-in>
+
+<!-- 
+<plug-in className="com.octo.captcha.module.struts.CaptchaServicePlugin"/>
+-->
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/struts_form.xdt
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/struts_form.xdt?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/struts_form.xdt (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/struts_form.xdt Fri Oct 21 14:27:36 2005
@@ -0,0 +1,115 @@
+package <XDtPackage:packageOf><XDtStrutsForm:strutsFormClass/></XDtPackage:packageOf>;
+
+import org.roller.RollerException;
+import java.util.Locale;
+
+/**
+ * <XDtI18n:getString bundle="xdoclet.modules.apache.struts.ejb.XDocletModulesApacheStrutsEjbMessages" resource="form_generated"/>
+ *
+ * @struts.form name="<XDtStrutsForm:strutsFormName/>"
+ */
+public class <XDtClass:classOf><XDtStrutsForm:strutsFormClass/></XDtClass:classOf>
+    extends    <XDtClass:classTagValue tagName="struts.form" paramName="extends" default="org.apache.struts.action.ActionForm" />
+    implements java.io.Serializable<XDtClass:ifHasClassTag tagName="struts.form" paramName="implements" superclasses="false">, <XDtClass:classTagValue tagName="struts.form" paramName="implements" superclasses="false"/></XDtClass:ifHasClassTag>
+{
+    <XDtStrutsForm:forAllFormFields>
+    protected <XDtMethod:methodType/> <XDtMethod:propertyName/>;
+    </XDtStrutsForm:forAllFormFields>
+
+    /** <XDtI18n:getString bundle="xdoclet.modules.apache.struts.ejb.XDocletModulesApacheStrutsEjbMessages" 
+        resource="form_empty_constructor"/> */
+    public <XDtClass:classOf><XDtStrutsForm:strutsFormClass/></XDtClass:classOf>() {}
+
+  <XDtEjbDataObj:ifIsWithDataContainer>
+    /** <XDtI18n:getString bundle="xdoclet.modules.apache.struts.ejb.XDocletModulesApacheStrutsEjbMessages" 
+        resource="form_dataobject_constructor"/> */
+    public <XDtClass:classOf><XDtStrutsForm:strutsFormClass/></XDtClass:classOf>(<XDtEjbDataObj:dataObjectClass /> dataHolder, java.util.Locale locale) throws RollerException
+    {
+       copyFrom(dataHolder, locale);
+    }
+  </XDtEjbDataObj:ifIsWithDataContainer>
+
+    <XDtStrutsForm:forAllFormFields>
+
+    public <XDtMethod:methodType/> <XDtMethod:getterMethod/>()<XDtMethod:exceptionList/>
+    {
+        return this.<XDtMethod:propertyName/>;
+    }
+
+   /** <XDtMethod:forAllMethodTags tagName="struts.validator">
+    * @struts.validator <XDtMethod:methodTagValue tagName="struts.validator"/></XDtMethod:forAllMethodTags><XDtMethod:forAllMethodTags tagName="struts.validator-args">
+    * @struts.validator-args <XDtMethod:methodTagValue tagName="struts.validator-args"/></XDtMethod:forAllMethodTags><XDtMethod:forAllMethodTags tagName="struts.validator-var">
+    * @struts.validator-var <XDtMethod:methodTagValue tagName="struts.validator-var"/></XDtMethod:forAllMethodTags>
+    */
+    public void <XDtMethod:setterMethod/>( <XDtMethod:methodType/> <XDtMethod:propertyName/> )
+    {
+        this.<XDtMethod:propertyName/> = <XDtMethod:propertyName/>;
+    }
+
+    </XDtStrutsForm:forAllFormFields>
+
+  <XDtEjbDataObj:ifIsWithDataContainer>
+    /**
+     * Copy values from this form bean to the specified data object.
+     * Only copies primitive types (Boolean, boolean, String, Integer, int, Timestamp, Date)
+     */
+    public void copyTo(<XDtEjbDataObj:dataObjectClass /> dataHolder, Locale locale) throws RollerException
+    {
+<XDtStrutsForm:forAllFormFields>
+    <XDtType:ifIsOfType value="return-type" 
+        type="java.lang.Boolean,boolean,java.lang.String,java.lang.Integer,int,java.sql.Timestamp,java.util.Date" 
+        extent="concrete-type">
+        dataHolder.<XDtMethod:setterMethod/>(this.<XDtMethod:propertyName/>);
+    </XDtType:ifIsOfType>  
+</XDtStrutsForm:forAllFormFields>
+    }
+
+    /**
+     * Copy values from specified data object to this form bean.
+     * Includes all types.
+     */
+    public void copyFrom(<XDtEjbDataObj:dataObjectClass /> dataHolder, Locale locale) throws RollerException
+    {
+<XDtStrutsForm:forAllFormFields>
+    <XDtType:ifIsOfType value="return-type" 
+        type="java.lang.Boolean,boolean,java.lang.String,java.lang.Integer,int,java.sql.Timestamp,java.util.Date" 
+        extent="concrete-type">
+        this.<XDtMethod:propertyName/> = dataHolder.<XDtMethod:getterMethod/>();
+    </XDtType:ifIsOfType>  
+</XDtStrutsForm:forAllFormFields>
+    }
+
+  </XDtEjbDataObj:ifIsWithDataContainer>
+  
+    public void doReset(
+    	org.apache.struts.action.ActionMapping mapping, 
+    	javax.servlet.ServletRequest request)
+    {
+<XDtStrutsForm:forAllFormFields>
+    <XDtType:ifIsOfType value="return-type" type="boolean" extent="concrete-type">
+        this.<XDtMethod:propertyName/> = false;
+    </XDtType:ifIsOfType>  
+    <XDtType:ifIsOfType value="return-type" type="int" extent="concrete-type">
+        this.<XDtMethod:propertyName/> = 0;
+    </XDtType:ifIsOfType>
+    <XDtType:ifIsOfType value="return-type" 
+        type="java.lang.Boolean,java.lang.String,java.lang.Integer,java.sql.Timestamp,java.util.Date" >
+        this.<XDtMethod:propertyName/> = null;
+    </XDtType:ifIsOfType>
+</XDtStrutsForm:forAllFormFields>
+    }
+    
+    public void reset(
+    	org.apache.struts.action.ActionMapping mapping, 
+    	javax.servlet.ServletRequest request)
+    {
+        doReset(mapping, request);
+    }
+    
+    public void reset(
+    	org.apache.struts.action.ActionMapping mapping, 
+    	javax.servlet.http.HttpServletRequest request)
+    {
+        doReset(mapping, request);
+    }
+}

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/taglib-tag.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/taglib-tag.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/taglib-tag.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/taglib-tag.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,308 @@
+
+
+   <tag>
+      <name>link</name>
+
+      <tag-class>org.roller.presentation.tags.LinkTag</tag-class>
+
+      <body-content>JSP</body-content>
+
+      <attribute>
+         <name>accesskey</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>anchor</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>forward</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>href</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>linkName</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>name</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onblur</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onclick</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>ondblclick</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onfocus</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onkeydown</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onkeypress</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onkeyup</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onmousedown</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onmousemove</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onmouseout</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onmouseover</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>onmouseup</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>page</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>paramId</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>paramName</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>paramProperty</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>paramScope</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>property</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>scope</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>style</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>styleClass</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>styleId</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>tabindex</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>target</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>transaction</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+   </tag>
+
+   <tag>
+      <name>linkparam</name>
+
+      <tag-class>org.roller.presentation.tags.LinkParamTag</tag-class>
+
+      <body-content>JSP</body-content>
+
+      <attribute>
+         <name>id</name>
+
+         <required>true</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>value</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>name</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>property</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+
+      <attribute>
+         <name>scope</name>
+
+         <required>false</required>
+
+         <rtexprvalue>true</rtexprvalue>
+      </attribute>
+   </tag>
+   
+
+

Added: incubator/roller/branches/roller_1.x/metadata/xdoclet/validation-global.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/metadata/xdoclet/validation-global.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/metadata/xdoclet/validation-global.xml (added)
+++ incubator/roller/branches/roller_1.x/metadata/xdoclet/validation-global.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,7 @@
+   <global>
+      <constant>
+        <!-- noslashes: no '/' slash characters. -->
+        <constant-name>noslashes</constant-name>
+        <constant-value>^[^/]*$</constant-value>
+      </constant>
+   </global>
\ No newline at end of file