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 no...@apache.org on 2010/02/10 14:52:52 UTC

svn commit: r908503 - in /james/server/trunk: ./ jpa-store/ jpa-store/src/main/java/org/apache/james/server/jpa/ jpa-store/src/test/java/org/apache/james/server/jpa/ spring-deployment/ spring-deployment/src/main/config/james/ spring-deployment/src/main...

Author: norman
Date: Wed Feb 10 13:52:52 2010
New Revision: 908503

URL: http://svn.apache.org/viewvc?rev=908503&view=rev
Log:
JPAUsersRepository is now usable in james

Modified:
    james/server/trunk/jpa-store/pom.xml
    james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUser.java
    james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUsersRepository.java
    james/server/trunk/jpa-store/src/test/java/org/apache/james/server/jpa/JpaUsersRepositoryTest.java
    james/server/trunk/pom.xml
    james/server/trunk/spring-deployment/pom.xml
    james/server/trunk/spring-deployment/src/main/config/james/META-INF/persistence.xml
    james/server/trunk/spring-deployment/src/main/config/james/users-store.xml
    james/server/trunk/user-library/src/test/java/org/apache/james/userrepository/MockUsersRepositoryTest.java

Modified: james/server/trunk/jpa-store/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/jpa-store/pom.xml?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/jpa-store/pom.xml (original)
+++ james/server/trunk/jpa-store/pom.xml Wed Feb 10 13:52:52 2010
@@ -31,6 +31,42 @@
   <name>Apache JAMES Server JPA Backend</name>
   <version>3.0-M1</version>
 
+  <build>
+    <plugins>
+    
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>openjpa-maven-plugin</artifactId>
+        <version>1.0</version>
+        <configuration>
+          <includes>org/apache/james/server/jpa/JPAUser.class</includes>
+          <addDefaultConstructor>true</addDefaultConstructor>
+          <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
+          <toolProperties>
+            <property>
+              <name>log</name>
+              <value>TOOL=TRACE</value>
+            </property>   
+            <property>
+              <name>metaDataFactory</name>
+              <value>jpa(Types=org.apache.james.server.jpa.JPAUser)</value>
+            </property>           
+          </toolProperties>
+        </configuration>
+        
+        <executions>
+          <execution>
+            <id>enhancer</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>enhance</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.james</groupId>
@@ -46,7 +82,20 @@
       <artifactId>persistence-api</artifactId>
       <scope>compile</scope>
     </dependency>
-        <dependency>
+    
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-configuration</groupId>
+      <artifactId>commons-configuration</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.james</groupId>
+      <artifactId>james-server-core-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.james</groupId>
       <artifactId>james-server-user-library</artifactId>
       <scope>test</scope>
@@ -58,22 +107,16 @@
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
-      <artifactId>james-server-core-api</artifactId>
-      <type>jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.james</groupId>
       <artifactId>james-server-user-library</artifactId>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
     <dependency>
-        <groupId>org.apache.openjpa</groupId>
-        <artifactId>openjpa</artifactId>
-        <version>1.2.1</version>
-        <scope>test</scope>
-      </dependency>
+      <groupId>org.apache.openjpa</groupId>
+      <artifactId>openjpa</artifactId>
+      <version>1.2.1</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>

Modified: james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUser.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUser.java?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUser.java (original)
+++ james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUser.java Wed Feb 10 13:52:52 2010
@@ -26,11 +26,13 @@
 import javax.persistence.NamedQuery;
 import javax.persistence.Version;
 
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.james.api.user.User;
 
 @Entity(name = "JamesUser")
 @NamedQueries( { 
     @NamedQuery(name = "findUserByName", query = "SELECT user FROM JamesUser user WHERE user.name=:name"),
+    @NamedQuery(name = "deleteUserByName", query = "DELETE FROM JamesUser user WHERE user.name=:name"),
     @NamedQuery(name = "containsUser", query = "SELECT COUNT(user) FROM JamesUser user WHERE user.name=:name") ,
     @NamedQuery(name = "countUsers", query = "SELECT COUNT(user) FROM JamesUser user"),
     @NamedQuery(name = "listUserNames", query = "SELECT user.name FROM JamesUser user") 
@@ -39,13 +41,7 @@
 public class JPAUser implements User {
 
     /**
-     * Static salt for hashing password. Modifying this value will render all
-     * passwords unrecognizable.
-     */
-    public static final String SALT = "JPAUsersRepository";
-
-    /**
-     * Hashes salted password.
+     * Hash password.
      * 
      * @param username
      *            not null
@@ -53,12 +49,20 @@
      *            not null
      * @return not null
      */
-    public static String hashPassword(String username, String password) {
-        // Combine dynamic and static salt
-        final String hashedSaltedPassword = password;// =
-        // Text.md5(Text.md5(username
-        // + password) + SALT);
-        return hashedSaltedPassword;
+    private static String hashPassword(String username, String password, String alg) {
+        String newPass;
+        if ( alg == null || alg.equals("MD5")) {
+            newPass = DigestUtils.md5Hex(password);
+        } else if (alg.equals("NONE")) {
+            newPass = "password";
+        } else if (alg.equals("SHA-256")) {
+            newPass = DigestUtils.sha256Hex(password);
+        } else if (alg.equals("SHA-512")) {
+            newPass = DigestUtils.sha512Hex(password);
+        } else {
+            newPass = DigestUtils.shaHex(password);
+        }
+        return newPass;
     }
 
     /** Prevents concurrent modification */
@@ -72,40 +76,47 @@
     /** Hashed password */
     @Basic
     private String password;
+    
+    @Basic
+    private String alg;
 
     protected JPAUser() {
     }
 
-    public JPAUser(final String userName, String password) {
+    public JPAUser(final String userName, String password,  String alg) {
         super();
         this.name = userName;
-        this.password = hashPassword(userName, password);
+        this.alg = alg;
+        this.password = hashPassword(userName, password, alg);
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.api.user.User#getUserName()
+     */
     public String getUserName() {
         return name;
     }
 
-    /**
-     * Gets salted, hashed password.
-     * 
-     * @return the hashedSaltedPassword
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.api.user.User#setPassword(java.lang.String)
      */
-    public final String getHashedSaltedPassword() {
-        return password;
-    }
-
     public boolean setPassword(String newPass) {
         final boolean result;
         if (newPass == null) {
             result = false;
         } else {
-            password = hashPassword(name, newPass);
+            password = hashPassword(name, newPass, alg);
             result = true;
         }
         return result;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.api.user.User#verifyPassword(java.lang.String)
+     */
     public boolean verifyPassword(String pass) {
         final boolean result;
         if (pass == null) {
@@ -113,7 +124,7 @@
         } else if (password == null) {
             result = false;
         } else {
-            result = password.equals(hashPassword(name, pass));
+            result = password.equals(hashPassword(name, pass, alg));
         }
         return result;
     }

Modified: james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUsersRepository.java?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUsersRepository.java (original)
+++ james/server/trunk/jpa-store/src/main/java/org/apache/james/server/jpa/JPAUsersRepository.java Wed Feb 10 13:52:52 2010
@@ -20,57 +20,36 @@
 package org.apache.james.server.jpa;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 
 import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
 import javax.persistence.EntityTransaction;
-import javax.persistence.PersistenceContext;
 import javax.persistence.PersistenceException;
+import javax.persistence.PersistenceUnit;
 
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.james.api.user.User;
 import org.apache.james.api.user.UsersRepository;
+import org.apache.james.lifecycle.Configurable;
+import org.apache.james.lifecycle.LogEnabled;
+
 
 /**
- * Proof-of-concept repository using JPA. TODO: Support managed contexts. TODO:
- * Use factory and support pooled contexts
+ * JPA based UserRepository
+ *
  */
-public class JPAUsersRepository implements UsersRepository {
-
-    private static final Log LOGGER = LogFactory.getLog(JPAUsersRepository.class);
+public class JPAUsersRepository implements UsersRepository, Configurable, LogEnabled {
 
-    private Log logger = LOGGER;
+    private EntityManagerFactory entityManagerFactory;
 
-    private EntityManager entityManager;
+    private String algo;
 
-    /**
-     * Gets current logger.
-     * 
-     * @return the logger
-     */
-    public final Log getLogger() {
-        return logger;
-    }
+    private Log logger;
 
-    /**
-     * Setter injection for logging.
-     * 
-     * @param logger
-     *            the logger to set
-     */
-    public final void setLogger(Log logger) {
-        this.logger = logger;
-    }
-
-    /**
-     * Gets entity manager.
-     * 
-     * @return the entityManager
-     */
-    public final EntityManager getEntityManager() {
-        return entityManager;
-    }
 
     /**
      * Sets entity manager.
@@ -78,9 +57,9 @@
      * @param entityManager
      *            the entityManager to set
      */
-    @PersistenceContext
-    public final void setEntityManager(EntityManager entityManager) {
-        this.entityManager = entityManager;
+    @PersistenceUnit
+    public final void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
+        this.entityManagerFactory = entityManagerFactory;
     }
 
     /**
@@ -128,10 +107,11 @@
      * @since James 2.3.0
      */
     public boolean addUser(String username, String password) {
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
         final EntityTransaction transaction = entityManager.getTransaction();
         try {
             transaction.begin();
-            JPAUser user = new JPAUser(username, password);
+            JPAUser user = new JPAUser(username, password, algo);
             entityManager.persist(user);
             transaction.commit();
             return true;
@@ -140,6 +120,8 @@
             if (transaction.isActive()) {
                 transaction.rollback();
             }
+        } finally {
+            entityManager.close();
         }
         return false;
     }
@@ -155,16 +137,16 @@
      * @since James 1.2.2
      */
     public User getUserByName(String name) {
-        return getJPAUserByName(name);
-    }
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
 
-    private JPAUser getJPAUserByName(String name) {
         try {
             return (JPAUser) entityManager.createNamedQuery("findUserByName").setParameter("name", name).getSingleResult();
         } catch (PersistenceException e) {
             logger.debug("Failed to find user", e);
             return null;
-        }
+        } finally {
+            entityManager.close();
+        }    
     }
 
     /**
@@ -193,6 +175,10 @@
      * @return the case-correct name of the user, null if the user doesn't exist
      */
     public String getRealName(String name) {
+        User u = getUserByName(name);
+        if (u != null) {
+            u.getUserName();
+        }
         return null;
     }
 
@@ -203,6 +189,8 @@
      * @return true if successful.
      */
     public boolean updateUser(User user) {
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
+
         final EntityTransaction transaction = entityManager.getTransaction();
         try {
             if (contains(user.getUserName())) {
@@ -219,6 +207,8 @@
                 transaction.rollback();
             }
             return false;
+        }finally {
+            entityManager.close();
         }
         return true;
     }
@@ -230,17 +220,20 @@
      *            the user to remove from the repository
      */
     public void removeUser(String name) {
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
+
         final EntityTransaction transaction = entityManager.getTransaction();
         try {
             transaction.begin();
-            JPAUser user = getJPAUserByName(name);
-            entityManager.remove(user);
+            entityManager.createNamedQuery("deleteUserByName").setParameter("name", name).executeUpdate();
             transaction.commit();
         } catch (PersistenceException e) {
-            logger.debug("Failed to save user", e);
+            logger.debug("Failed to remove user", e);
             if (transaction.isActive()) {
                 transaction.rollback();
             }
+        } finally {
+            entityManager.close();
         }
     }
 
@@ -252,11 +245,15 @@
      * @return whether the user is in the repository
      */
     public boolean contains(String name) {
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
+
         try {
             return ((Long) entityManager.createNamedQuery("containsUser").setParameter("name", name).getSingleResult()).longValue() > 0;
         } catch (PersistenceException e) {
             logger.debug("Failed to find user", e);
             return false;
+        } finally {
+            entityManager.close();
         }
     }
 
@@ -290,7 +287,7 @@
      * @since James 1.2.2
      */
     public boolean test(String name, String password) {
-        final JPAUser user = getJPAUserByName(name);
+        final User user = getUserByName(name);
         final boolean result;
         if (user == null) {
             result = false;
@@ -306,11 +303,15 @@
      * @return the number of users in the repository
      */
     public int countUsers() {
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
+
         try {
             return ((Long) entityManager.createNamedQuery("countUsers").getSingleResult()).intValue();
         } catch (PersistenceException e) {
             logger.debug("Failed to find user", e);
             return 0;
+        } finally {
+            entityManager.close();
         }
     }
 
@@ -322,13 +323,33 @@
      */
     @SuppressWarnings("unchecked")
     public Iterator<String> list() {
+        EntityManager entityManager = entityManagerFactory.createEntityManager();
+
         try {
-            return entityManager.createNamedQuery("listUserNames").getResultList().iterator();
+            return Collections.unmodifiableList(entityManager.createNamedQuery("listUserNames").getResultList()).iterator();
 
         } catch (PersistenceException e) {
             logger.debug("Failed to find user", e);
             return new ArrayList<String>().iterator();
+        } finally {
+            entityManager.close();
         }
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.lifecycle.Configurable#configure(org.apache.commons.configuration.HierarchicalConfiguration)
+     */
+    public void configure(HierarchicalConfiguration config) throws ConfigurationException {
+        algo = config.getString("algorithm","MD5");
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
+     */
+    public void setLog(Log log) {
+        this.logger = log;
+    }
+
 }

Modified: james/server/trunk/jpa-store/src/test/java/org/apache/james/server/jpa/JpaUsersRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/jpa-store/src/test/java/org/apache/james/server/jpa/JpaUsersRepositoryTest.java?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/jpa-store/src/test/java/org/apache/james/server/jpa/JpaUsersRepositoryTest.java (original)
+++ james/server/trunk/jpa-store/src/test/java/org/apache/james/server/jpa/JpaUsersRepositoryTest.java Wed Feb 10 13:52:52 2010
@@ -23,6 +23,7 @@
 
 import javax.persistence.PersistenceException;
 
+import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.james.api.user.UsersRepository;
 import org.apache.james.userrepository.MockUsersRepositoryTest;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
@@ -34,7 +35,6 @@
 
     private HashMap<String, String> properties;
     private OpenJPAEntityManagerFactory factory;
-    private OpenJPAEntityManager manager;
 
     @Override
     protected void setUp() throws Exception {
@@ -53,35 +53,34 @@
     protected void tearDown() throws Exception {
         deleteAll();
         super.tearDown();
-        if (manager != null)
-        {
-            manager.close();
-        }
-        if (factory != null)
-        {
-            factory.close();
-        }
+       
     }
     
     private void deleteAll() {
+        OpenJPAEntityManager manager = factory.createEntityManager();
+        final OpenJPAEntityTransaction transaction = manager.getTransaction();
         try
         {
-            OpenJPAEntityManager manager = factory.createEntityManager();
-            final OpenJPAEntityTransaction transaction = manager.getTransaction();
             transaction.begin();
             manager.createQuery("DELETE FROM JamesUser user").executeUpdate();
             transaction.commit();
         } catch (PersistenceException e) {
             e.printStackTrace();
+            if (transaction.isActive()) {
+                transaction.rollback();
+            }
+        } finally {
+            manager.close();
         }
     }
 
+    @Override
     protected UsersRepository getUsersRepository() throws Exception 
     {
         factory = OpenJPAPersistence.getEntityManagerFactory(properties);
-        manager = factory.createEntityManager();
         JPAUsersRepository repos =  new JPAUsersRepository();
-        repos.setEntityManager(manager);
+        repos.setLog(new SimpleLog("JPA"));
+        repos.setEntityManagerFactory(factory);
         return repos;
     }
 }

Modified: james/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Wed Feb 10 13:52:52 2010
@@ -458,7 +458,11 @@
       <artifactId>james-server-remotemanager</artifactId>
       <version>3.0-M1</version>
     </dependency>
-    
+    <dependency>
+      <groupId>org.apache.james</groupId>
+      <artifactId>james-server-jpa-store</artifactId>
+      <version>3.0-M1</version>
+    </dependency>
     <dependency>
       <groupId>javax.persistence</groupId>
       <artifactId>persistence-api</artifactId>

Modified: james/server/trunk/spring-deployment/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/pom.xml?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/pom.xml (original)
+++ james/server/trunk/spring-deployment/pom.xml Wed Feb 10 13:52:52 2010
@@ -343,7 +343,11 @@
       <artifactId>apache-james-imap-processor</artifactId>
       <scope>runtime</scope>
     </dependency>
-     
+    <dependency>
+      <groupId>org.apache.james</groupId>
+      <artifactId>james-server-jpa-store</artifactId>
+      <scope>runtime</scope>
+    </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>

Modified: james/server/trunk/spring-deployment/src/main/config/james/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/META-INF/persistence.xml?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/META-INF/persistence.xml (original)
+++ james/server/trunk/spring-deployment/src/main/config/james/META-INF/persistence.xml Wed Feb 10 13:52:52 2010
@@ -2,15 +2,20 @@
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     version="1.0">
     <persistence-unit name="James" transaction-type="RESOURCE_LOCAL">
-	<class>org.apache.james.imap.jpa.mail.model.JPAHeader</class>
-	<class>org.apache.james.imap.jpa.mail.model.JPAMailbox</class>
-	<class>org.apache.james.imap.jpa.mail.model.JPAMailboxMembership</class>
-	<class>org.apache.james.imap.jpa.mail.model.JPAMessage</class>
-	<class>org.apache.james.imap.jpa.mail.model.JPAProperty</class>
-	<class>org.apache.james.imap.jpa.user.model.JPASubscription</class>
-    <properties>
-        <!--  create tables on startup -->
-		<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
-    </properties>
+        <!-- IMAP stuff-->
+	    <class>org.apache.james.imap.jpa.mail.model.JPAHeader</class>
+    	<class>org.apache.james.imap.jpa.mail.model.JPAMailbox</class>
+    	<class>org.apache.james.imap.jpa.mail.model.JPAMailboxMembership</class>
+    	<class>org.apache.james.imap.jpa.mail.model.JPAMessage</class>
+    	<class>org.apache.james.imap.jpa.mail.model.JPAProperty</class>
+    	<class>org.apache.james.imap.jpa.user.model.JPASubscription</class>
+        
+        <!-- UsersRepository -->
+    	<class>org.apache.james.server.jpa.JPAUser</class>
+
+        <properties>
+            <!--  create tables on startup -->
+	    	<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+        </properties>
     </persistence-unit>
 </persistence>

Modified: james/server/trunk/spring-deployment/src/main/config/james/users-store.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/users-store.xml?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/users-store.xml (original)
+++ james/server/trunk/spring-deployment/src/main/config/james/users-store.xml Wed Feb 10 13:52:52 2010
@@ -52,16 +52,22 @@
     <!-- Note: The <data-source> element must refer to a connection configured -->
     <!--       in the <database-connections> configuration section. -->
     <!-- The LocalUsers repository, for storing James' User info. -->
+    <!-- 
     <repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users">
         <sqlFile>file://conf/sqlResources.xml</sqlFile>
-        <!-- Set whether user names are case sensitive or case insensitive -->
         <ignoreCase>true</ignoreCase>
-        <!-- Set whether to enable local aliases -->
         <enableAliases>true</enableAliases>
-        <!-- Set whether to enable forwarding -->
         <enableForwarding>true</enableForwarding>
     </repository>
-
+    -->
+    
+    <!-- JPA based backend. Support password algorithm are:
+         MD5, SHA-256, SHA-512, NONE
+     -->
+    <repository name="LocalUsers" class="org.apache.james.server.jpa.JPAUsersRepository">
+        <algorithm>MD5</algorithm>
+    </repository>
+    
     <!-- This is an example configuration including configuration for a list server. -->
     <!-- CHECKME: before uncommenting this, edit the configuration file's contents   -->
     <!-- -->

Modified: james/server/trunk/user-library/src/test/java/org/apache/james/userrepository/MockUsersRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/test/java/org/apache/james/userrepository/MockUsersRepositoryTest.java?rev=908503&r1=908502&r2=908503&view=diff
==============================================================================
--- james/server/trunk/user-library/src/test/java/org/apache/james/userrepository/MockUsersRepositoryTest.java (original)
+++ james/server/trunk/user-library/src/test/java/org/apache/james/userrepository/MockUsersRepositoryTest.java Wed Feb 10 13:52:52 2010
@@ -155,7 +155,7 @@
             // UsersFileRepository accept this call for every argument
             // fail("removing an unknown user didn't fail!");
         } catch (Exception e) {
-            
+            e.printStackTrace();
         }
         assertTrue("user not added", usersRepository.addUser("username","password"));
         assertEquals("didn't accept the correct password", usersRepository.test("username", "password"),getPasswordsEnabled());
@@ -172,6 +172,7 @@
         try {
             usersRepository.removeUser("username");
         } catch (Exception e) {
+            e.printStackTrace();
             fail("removing the user failed!");
         }
         assertFalse("user not existing", usersRepository.contains("username"));



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org