You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2008/09/06 22:21:48 UTC
svn commit: r692726 - in /james/protocols/imap/trunk/main-deployment: ./
src/test/java/org/apache/james/experimental/imapserver/
src/test/java/org/apache/james/mailboxmanager/mock/
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org