Author: rdonkin
Date: Sat Sep  6 13:21:47 2008
New Revision: 692726

URL: http://svn.apache.org/viewvc?rev=692726&view=rev
Log:
Fixed test harness.

Modified:
    james/protocols/imap/trunk/main-deployment/   (props changed)
    james/protocols/imap/trunk/main-deployment/build.xml
    
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/experimental/imapserver/ExperimentalHostSystem.java
    
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java

Propchange: james/protocols/imap/trunk/main-deployment/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sat Sep  6 13:21:47 2008
@@ -1,2 +1,3 @@
 target
 .*
+*.log

Modified: james/protocols/imap/trunk/main-deployment/build.xml
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/main-deployment/build.xml?rev=692726&r1=692725&r2=692726&view=diff
==============================================================================
--- james/protocols/imap/trunk/main-deployment/build.xml (original)
+++ james/protocols/imap/trunk/main-deployment/build.xml Sat Sep  6 13:21:47 
2008
@@ -3,4 +3,26 @@
   <description>Builds main-deployment module. This is an deployment 
module.</description>
   <property name="name.module" value="main-deployment" />
   <import file="../build-tools/deployment-build.xml" optional="no" />
+       
+    <target 
+        name='dist'
+        description='Builds and creates distribution without cleaning'
+        depends='build, check-environment, conditional-clean, test'
+        unless='dont.build.module'>
+        <CreateJar 
+            name='${name.module}'   
+            bin='${dir.build.bin}'
+            lib='${dir.stage.james}'/>  
+        <CreateJar 
+            name='${name.module}-test'   
+            bin='${dir.build.test}'
+            lib='${dir.stage.james}'/>  
+       <!-- JavaDocs fails unless source exists in main
+        <CreateJavaDocs/>
+        <CreateJar 
+            name='${name.module}-javadoc'   
+            bin='${build.javadocs}'
+            lib='${dir.stage.james}'/>     
+            -->
+    </target> 
 </project>

Modified: 
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/experimental/imapserver/ExperimentalHostSystem.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/experimental/imapserver/ExperimentalHostSystem.java?rev=692726&r1=692725&r2=692726&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/experimental/imapserver/ExperimentalHostSystem.java
 (original)
+++ 
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/experimental/imapserver/ExperimentalHostSystem.java
 Sat Sep  6 13:21:47 2008
@@ -35,6 +35,7 @@
 import org.apache.james.api.imap.process.ImapProcessor;
 import org.apache.james.imapserver.codec.decode.ImapDecoder;
 import org.apache.james.imapserver.codec.encode.ImapEncoder;
+import 
org.apache.james.mailboxmanager.mock.TorqueMailboxManagerProviderSingleton;
 import org.apache.james.test.functional.imap.HostSystem;
 
 public class ExperimentalHostSystem implements HostSystem {
@@ -239,7 +240,7 @@
     }
 
        public boolean addUser(String user, String password) throws Exception {
-               
-               return false;
+               TorqueMailboxManagerProviderSingleton.addUser(user, password);
+               return true;
        }
 }

Modified: 
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java
URL: 
http://svn.apache.org/viewvc/james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java?rev=692726&r1=692725&r2=692726&view=diff
==============================================================================
--- 
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java
 (original)
+++ 
james/protocols/imap/trunk/main-deployment/src/test/java/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java
 Sat Sep  6 13:21:47 2008
@@ -19,17 +19,160 @@
 
 package org.apache.james.mailboxmanager.mock;
 
-import java.util.Collection;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Locale;
 
+import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.james.experimental.imapserver.ExperimentalHostSystem;
-import org.apache.james.experimental.imapserver.HostSystemFactory;
 import org.apache.james.mailboxmanager.impl.DefaultMailboxManagerProvider;
 import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
-import org.apache.james.mailboxmanager.manager.SubscriptionException;
 import org.apache.james.mailboxmanager.torque.TorqueMailboxManager;
+import org.apache.james.mailboxmanager.torque.om.MailboxRowPeer;
+import org.apache.james.mailboxmanager.torque.om.MessageBodyPeer;
+import org.apache.james.mailboxmanager.torque.om.MessageFlagsPeer;
+import org.apache.james.mailboxmanager.torque.om.MessageHeaderPeer;
+import org.apache.james.mailboxmanager.torque.om.MessageRowPeer;
+import org.apache.torque.Torque;
+import org.apache.torque.util.BasePeer;
+import org.apache.torque.util.Transaction;
 
 public class TorqueMailboxManagerProviderSingleton {
    
+       //TODO: replicates code in server
+    private static final String[] tableNames = new String[] {
+            MailboxRowPeer.TABLE_NAME, 
+            MessageRowPeer.TABLE_NAME,
+            MessageFlagsPeer.TABLE_NAME,
+            MessageHeaderPeer.TABLE_NAME, 
+            MessageBodyPeer.TABLE_NAME
+            };
+       //TODO: replicates code in server
+    private static final String[] CREATE_STATEMENTS = {
+    "CREATE TABLE mailbox" +
+    "(" +
+    "  mailbox_id BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY," +
+    "        name VARCHAR(255) NOT NULL," +
+    "        uid_validity BIGINT NOT NULL," +
+    "        last_uid BIGINT NOT NULL," +
+    "        message_count INTEGER default 0," +
+    "        size BIGINT default 0," +
+    "        PRIMARY KEY(mailbox_id)," +
+    "        UNIQUE (name))",
+    "        CREATE TABLE message" +
+    "    (" +
+    "        mailbox_id BIGINT NOT NULL," +
+    "        uid BIGINT NOT NULL," +
+    "        internal_date TIMESTAMP," +
+    "        size INTEGER," +
+    "        PRIMARY KEY(mailbox_id,uid)," +
+    "        FOREIGN KEY (mailbox_id) REFERENCES mailbox (mailbox_id)" +
+    "            ON DELETE CASCADE" +
+    "      )",   
+    "CREATE TABLE message_flags" +
+    "    (" +
+    "        mailbox_id BIGINT NOT NULL," +
+    "        uid BIGINT NOT NULL," +
+    "        answered INTEGER default 0 NOT NULL," +
+    "        deleted INTEGER default 0 NOT NULL," +
+    "        draft INTEGER default 0 NOT NULL," +
+    "        flagged INTEGER default 0 NOT NULL," +
+    "        recent INTEGER default 0 NOT NULL," +
+    "        seen INTEGER default 0 NOT NULL," +
+    "        PRIMARY KEY(mailbox_id,uid)," +
+    "        FOREIGN KEY (mailbox_id, uid) REFERENCES message (mailbox_id, 
uid)" +
+    "            ON DELETE CASCADE" +
+    "      )",
+    "CREATE TABLE message_header" +
+    "    (" +
+    "        mailbox_id BIGINT NOT NULL," +
+    "        uid BIGINT NOT NULL," +
+    "        line_number INTEGER NOT NULL," +
+    "        field VARCHAR(256) NOT NULL," +
+    "        value VARCHAR(1024) NOT NULL," +
+    "        PRIMARY KEY(mailbox_id,uid,line_number)," +
+    "        FOREIGN KEY (mailbox_id, uid) REFERENCES message (mailbox_id, 
uid)" +
+    "            ON DELETE CASCADE" +
+    "      )", 
+    "CREATE TABLE message_body" +
+    "    (" +
+    "        mailbox_id BIGINT NOT NULL," +
+    "        uid BIGINT NOT NULL," +
+    "        body BLOB NOT NULL," +
+    "        PRIMARY KEY(mailbox_id,uid)," +
+    "        FOREIGN KEY (mailbox_id, uid) REFERENCES message (mailbox_id, 
uid)" +
+    "            ON DELETE CASCADE" +
+    "      )"};  
+       //TODO: replicates code in server
+    public static void initialize() throws Exception {
+       BaseConfiguration torqueConf = configureDefaults();
+       Connection conn = null;
+       Torque.init(torqueConf);
+       conn = Transaction.begin(MailboxRowPeer.DATABASE_NAME);
+
+       DatabaseMetaData dbMetaData = conn.getMetaData();
+
+       for (int i = 0; i < tableNames.length; i++) {
+               if (!tableExists(dbMetaData, tableNames[i])) {
+                       BasePeer.executeStatement(CREATE_STATEMENTS[i],
+                                       conn);
+                       System.out.println("Created table " + tableNames[i]);
+                       System.out.println(CREATE_STATEMENTS[i]);
+               }
+       }
+
+       Transaction.commit(conn);
+       System.out.println("MailboxManager has been initialized");
+    }
+       //TODO: replicates code in server
+    private static boolean tableExists(DatabaseMetaData dbMetaData, String 
tableName)
+    throws SQLException {
+       return (tableExistsCaseSensitive(dbMetaData, tableName)
+                       || tableExistsCaseSensitive(dbMetaData, tableName
+                                       .toUpperCase(Locale.US)) || 
tableExistsCaseSensitive(
+                                                       dbMetaData, 
tableName.toLowerCase(Locale.US)));
+    }
+       //TODO: replicates code in server
+    private static boolean tableExistsCaseSensitive(DatabaseMetaData 
dbMetaData,
+               String tableName) throws SQLException {
+       ResultSet rsTables = dbMetaData.getTables(null, null, tableName, null);
+       try {
+               boolean found = rsTables.next();
+               return found;
+       } finally {
+               if (rsTables != null) {
+                       rsTables.close();
+               }
+       }
+    }
+       //TODO: replicates code in server
+    public static BaseConfiguration configureDefaults()
+            throws org.apache.commons.configuration.ConfigurationException {
+       BaseConfiguration torqueConf = new BaseConfiguration();
+            torqueConf.addProperty("torque.database.default", 
"mailboxmanager");
+            torqueConf.addProperty("torque.database.mailboxmanager.adapter",
+                    "derby");
+            torqueConf.addProperty("torque.dsfactory.mailboxmanager.factory",
+                    "org.apache.torque.dsfactory.SharedPoolDataSourceFactory");
+            torqueConf.addProperty(
+                    "torque.dsfactory.mailboxmanager.connection.driver",
+                    "org.apache.derby.jdbc.EmbeddedDriver");
+            torqueConf.addProperty(
+                    "torque.dsfactory.mailboxmanager.connection.url",
+                    "jdbc:derby:target/testdb;create=true");
+            torqueConf.addProperty(
+                    "torque.dsfactory.mailboxmanager.connection.user", "app");
+            torqueConf.addProperty(
+                    "torque.dsfactory.mailboxmanager.connection.password",
+                    "app");
+            torqueConf.addProperty(
+                    "torque.dsfactory.mailboxmanager.pool.maxActive", "100");
+        return torqueConf;
+    }
+       
+    
     private static TorqueMailboxManager torqueMailboxManager;
     private static SimpleUserManager userManager;
     private static DefaultMailboxManagerProvider defaultMailboxManagerProvider;
@@ -52,6 +195,7 @@
     private static TorqueMailboxManager getMailboxManager() throws Exception {
         if (torqueMailboxManager == null) {
                userManager = new SimpleUserManager();
+               initialize();
             torqueMailboxManager=new TorqueMailboxManager(userManager);
         }
         return torqueMailboxManager;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to