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/12/30 18:11:53 UTC
svn commit: r1053944 - in /james/server/trunk:
user-api/src/main/java/org/apache/james/user/api/
user-file/src/main/java/org/apache/james/user/file/
user-file/src/test/java/org/apache/james/user/file/
user-jcr/src/main/java/org/apache/james/user/jcr/ u...
Author: norman
Date: Thu Dec 30 17:11:52 2010
New Revision: 1053944
URL: http://svn.apache.org/viewvc?rev=1053944&view=rev
Log:
Check if the username is valid in terms of virtualhosting support. Also remove deprecated methods and classes. See JAMES-1164
Added:
james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
- copied, changed from r1052807, james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/MockUsersRepositoryTest.java
Removed:
james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/ListUsersJdbcRepository.java
james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/ListUsersJdbcRepositoryTest.java
james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractReadOnlyVirtualUserTable.java
james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/MockUsersRepositoryTest.java
Modified:
james/server/trunk/user-api/src/main/java/org/apache/james/user/api/UsersRepository.java
james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java
james/server/trunk/user-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
james/server/trunk/user-jcr/src/main/java/org/apache/james/user/jcr/JCRUsersRepository.java
james/server/trunk/user-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java
james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepository.java
james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java
james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
james/server/trunk/user-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
james/server/trunk/user-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
james/server/trunk/user-library/pom.xml
james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/mock/MockUsersRepository.java
Modified: james/server/trunk/user-api/src/main/java/org/apache/james/user/api/UsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-api/src/main/java/org/apache/james/user/api/UsersRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-api/src/main/java/org/apache/james/user/api/UsersRepository.java (original)
+++ james/server/trunk/user-api/src/main/java/org/apache/james/user/api/UsersRepository.java Thu Dec 30 17:11:52 2010
@@ -41,32 +41,7 @@ public interface UsersRepository {
String ROLE = "org.apache.james.api.user.UsersRepository";
String USER = "USER";
-
- /**
- * Adds a user to the repository with the specified User object.
- *
- * @param user the user to be added
- *
- * @return true if succesful, false otherwise
- * @since James 1.2.2
- *
- * @deprecated James 2.4 user should be added using username/password
- * because specific implementations of UsersRepository will support specific
- * implementations of users object.
- */
- boolean addUser(User user);
-
- /**
- * Adds a user to the repository with the specified attributes. In current
- * implementations, the Object attributes is generally a String password.
- *
- * @param name the name of the user to be added
- * @param attributes see decription
- *
- * @deprecated James 2.4 user is always added using username/password and
- * eventually modified by retrieving it later.
- */
- void addUser(String name, Object attributes);
+
/**
* Adds a user to the repository with the specified password
@@ -90,18 +65,6 @@ public interface UsersRepository {
*/
User getUserByName(String name);
- /**
- * Get the user object with the specified user name. Match user naems on
- * a case insensitive basis. Return null if no such user.
- *
- * @param name the name of the user to retrieve
- * @return the user being retrieved, null if the user doesn't exist
- *
- * @since James 1.2.2
- * @deprecated James 2.4 now caseSensitive is a property of the repository
- * implementations and the getUserByName will search according to this property.
- */
- User getUserByNameCaseInsensitive(String name);
/**
* Returns the user name of the user matching name on an equalsIgnoreCase
@@ -135,17 +98,6 @@ public interface UsersRepository {
*/
boolean contains(String name);
- /**
- * Returns whether or not this user is in the repository. Names are
- * matched on a case insensitive basis.
- *
- * @param name the name to check in the repository
- * @return whether the user is in the repository
- *
- * @deprecated James 2.4 now caseSensitive is a property of the repository
- * implementations and the contains will search according to this property.
- */
- boolean containsCaseInsensitive(String name);
/**
* Test if user with name 'name' has password 'password'.
Modified: james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java (original)
+++ james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java Thu Dec 30 17:11:52 2010
@@ -28,7 +28,6 @@ import org.apache.james.filesystem.api.F
import org.apache.james.repository.file.FilePersistentObjectRepository;
import org.apache.james.user.api.model.User;
import org.apache.james.user.lib.AbstractJamesUsersRepository;
-import org.apache.james.user.lib.model.DefaultJamesUser;
import java.util.Iterator;
@@ -137,14 +136,7 @@ public class UsersFileRepository
}
}
- /**
- * @see org.apache.james.user.api.UsersRepository#addUser(java.lang.String, java.lang.String)
- */
- public boolean addUser(String username, String password) {
- User newbie = new DefaultJamesUser(username, "SHA");
- newbie.setPassword(password);
- return addUser(newbie);
- }
+
/**
* @see org.apache.james.user.api.UsersRepository#getUserByName(java.lang.String)
@@ -169,17 +161,6 @@ public class UsersFileRepository
}
/**
- * @see org.apache.james.user.api.UsersRepository#getUserByNameCaseInsensitive(java.lang.String)
- */
- public User getUserByNameCaseInsensitive(String name) {
- String realName = getRealName(name, true);
- if (realName == null ) {
- return null;
- }
- return getUserByName(realName);
- }
-
- /**
* Return the real name, given the ignoreCase boolean parameter
*/
public String getRealName(String name, boolean ignoreCase) {
Modified: james/server/trunk/user-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java (original)
+++ james/server/trunk/user-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java Thu Dec 30 17:11:52 2010
@@ -34,14 +34,14 @@ import org.apache.james.lifecycle.api.Li
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.model.JamesUser;
import org.apache.james.user.file.UsersFileRepository;
-import org.apache.james.user.lib.MockUsersRepositoryTest;
+import org.apache.james.user.lib.AbstractUsersRepositoryTest;
import org.apache.james.vut.api.VirtualUserTable;
import org.apache.mailet.MailAddress;
/**
* Test basic behaviours of UsersFileRepository
*/
-public class UsersFileRepositoryTest extends MockUsersRepositoryTest {
+public class UsersFileRepositoryTest extends AbstractUsersRepositoryTest {
/**
* Create the repository to be tested.
Modified: james/server/trunk/user-jcr/src/main/java/org/apache/james/user/jcr/JCRUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jcr/src/main/java/org/apache/james/user/jcr/JCRUsersRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jcr/src/main/java/org/apache/james/user/jcr/JCRUsersRepository.java (original)
+++ james/server/trunk/user-jcr/src/main/java/org/apache/james/user/jcr/JCRUsersRepository.java Thu Dec 30 17:11:52 2010
@@ -34,20 +34,18 @@ import javax.jcr.SimpleCredentials;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.commons.logging.Log;
import org.apache.jackrabbit.util.ISO9075;
import org.apache.jackrabbit.util.Text;
-import org.apache.james.lifecycle.api.Configurable;
-import org.apache.james.lifecycle.api.LogEnabled;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.model.User;
import org.apache.james.user.jcr.model.JCRUser;
+import org.apache.james.user.lib.AbstractUsersRepository;
/**
* {@link UsersRepository} implementation which stores users to a JCR {@link Repository}
*
*/
-public class JCRUsersRepository implements UsersRepository, Configurable, LogEnabled {
+public class JCRUsersRepository extends AbstractUsersRepository {
//TODO: Add namespacing
private static final String PASSWD_PROPERTY = "passwd";
@@ -55,138 +53,25 @@ public class JCRUsersRepository implemen
private static final String USERNAME_PROPERTY = "username";
private static final String USERS_PATH = "users";
- private Repository repository;
- private SimpleCredentials creds;
- private String workspace;
+ private Repository repository;
+ private SimpleCredentials creds;
+ private String workspace;
- private Log logger;
-
- private boolean virtualHosting;
-
@Resource(name="jcrRepository")
public void setRepository(Repository repository) {
this.repository = repository;
}
-
- /*
- * (non-Javadoc)
- * @see org.apache.james.lifecycle.Configurable#configure(org.apache.commons.configuration.HierarchicalConfiguration)
- */
- public void configure(HierarchicalConfiguration config)
- throws ConfigurationException {
- this.workspace = config.getString("workspace",null);
- String username = config.getString("username", null);
- String password = config.getString("password",null);
-
- if (username != null && password != null) {
- this.creds = new SimpleCredentials(username, password.toCharArray());
- }
- virtualHosting = config.getBoolean("enableVirtualHosting", false);
-
- }
-
-
- /*
- * (non-Javadoc)
- * @see org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
- */
- public void setLog(Log log) {
- this.logger = log;
- }
- /**
- * Adds a user to the repository with the specified User object.
- *
- * @param user the user to be added
- *
- * @return true if succesful, false otherwise
- *
- * @deprecated James 2.4 user should be added using username/password
- * because specific implementations of UsersRepository will support specific
- * implementations of users object.
- */
- public boolean addUser(User user) {
- throw new UnsupportedOperationException("Unsupported by JCR");
- }
+ public void doConfigure(HierarchicalConfiguration config) throws ConfigurationException {
+ this.workspace = config.getString("workspace", null);
+ String username = config.getString("username", null);
+ String password = config.getString("password", null);
- /**
- * Adds a user to the repository with the specified attributes. In current
- * implementations, the Object attributes is generally a String password.
- *
- * @param name the name of the user to be added
- * @param attributes see decription
- *
- * @deprecated James 2.4 user is always added using username/password and
- * eventually modified by retrieving it later.
- */
- public void addUser(String name, Object attributes) {
- if (attributes instanceof String) {
- addUser(name, (String) attributes);
- } else {
- throw new IllegalArgumentException("Expected password string");
+ if (username != null && password != null) {
+ this.creds = new SimpleCredentials(username, password.toCharArray());
}
}
-
- /**
- * Adds a user to the repository with the specified password
- *
- * @param username the username of the user to be added
- * @param password the password of the user to add
- * @return true if succesful, false otherwise
- *
- */
- public boolean addUser(String username, String password) {
- try {
- final Session session = login();
- try {
- final String name = toSafeName(username);
- final String path = USERS_PATH + "/" + name;
- final Node rootNode = session.getRootNode();
- try {
- rootNode.getNode(path);
- logger.info("User already exists");
- return false;
- } catch (PathNotFoundException e) {
- // user does not exist
- }
- Node parent;
- try {
- parent = rootNode.getNode(USERS_PATH);
- } catch (PathNotFoundException e) {
- // TODO: Need to consider whether should insist that parent
- // TODO: path exists.
- parent = rootNode.addNode(USERS_PATH);
- }
-
- Node node = parent.addNode(name);
- node.setProperty(USERNAME_PROPERTY, username);
- final String hashedPassword;
- if (password == null)
- {
- // Support easy password reset
- hashedPassword = "";
- }
- else
- {
- hashedPassword = JCRUser.hashPassword(username, password);
- }
- node.setProperty(PASSWD_PROPERTY, hashedPassword);
- session.save();
- return true;
- } finally {
- session.logout();
- }
-
- } catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to add user: " + username, e);
- }
- }
-
- return false;
- }
-
protected String toSafeName(String key) {
String name = ISO9075.encode(Text.escapeIllegalJcrChars(key));
return name;
@@ -226,28 +111,14 @@ public class JCRUsersRepository implemen
}
} catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to add user: " + username, e);
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to add user: " + username, e);
}
user = null;
}
return user;
}
- /**
- * Get the user object with the specified user name. Match user naems on
- * a case insensitive basis. Return null if no such user.
- *
- * @param name the name of the user to retrieve
- * @return the user being retrieved, null if the user doesn't exist
- *
- * @since James 1.2.2
- * @deprecated James 2.4 now caseSensitive is a property of the repository
- * implementations and the getUserByName will search according to this property.
- */
- public User getUserByNameCaseInsensitive(String name) {
- throw new UnsupportedOperationException();
- }
/**
* Returns the user name of the user matching name on an equalsIgnoreCase
@@ -285,15 +156,15 @@ public class JCRUsersRepository implemen
return true;
} catch (PathNotFoundException e) {
// user not found
- logger.debug("User not found");
+ getLogger().debug("User not found");
}
} finally {
session.logout();
}
} catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to add user: " + userName, e);
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to add user: " + userName, e);
}
}
}
@@ -322,8 +193,8 @@ public class JCRUsersRepository implemen
}
} catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to add user: " + username, e);
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to add user: " + username, e);
}
}
}
@@ -347,27 +218,14 @@ public class JCRUsersRepository implemen
}
} catch (RepositoryException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("User not found: " + name, e);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("User not found: " + name, e);
}
}
return false;
}
- /**
- * Returns whether or not this user is in the repository. Names are
- * matched on a case insensitive basis.
- *
- * @param name the name to check in the repository
- * @return whether the user is in the repository
- *
- * @deprecated James 2.4 now caseSensitive is a property of the repository
- * implementations and the contains will search according to this property.
- */
- public boolean containsCaseInsensitive(String name) {
- throw new UnsupportedOperationException();
- }
/**
* Test if user with name 'name' has password 'password'.
@@ -399,7 +257,7 @@ public class JCRUsersRepository implemen
return current.equals(hashPassword);
} catch (PathNotFoundException e) {
// user not found
- logger.debug("User not found");
+ getLogger().debug("User not found");
return false;
}
} finally {
@@ -407,8 +265,8 @@ public class JCRUsersRepository implemen
}
} catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to add user: " + username, e);
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to add user: " + username, e);
}
return false;
}
@@ -438,8 +296,8 @@ public class JCRUsersRepository implemen
session.logout();
}
} catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to count user", e);
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to count user", e);
}
return 0;
}
@@ -466,29 +324,74 @@ public class JCRUsersRepository implemen
final String userName = node.getProperty(USERNAME_PROPERTY).getString();
userNames.add(userName);
} catch (PathNotFoundException e) {
- logger.info("Node missing user name. Ignoring.");
+ getLogger().info("Node missing user name. Ignoring.");
}
}
} catch (PathNotFoundException e) {
- logger.info("Path not found. Forgotten to setup the repository?");
+ getLogger().info("Path not found. Forgotten to setup the repository?");
}
} finally {
session.logout();
}
} catch (RepositoryException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Failed to count user", e);
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to count user", e);
}
}
return userNames.iterator();
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.user.api.UsersRepository#supportVirtualHosting()
- */
- public boolean supportVirtualHosting() {
- return virtualHosting;
+
+ @Override
+ protected boolean doAddUser(String username, String password) {
+ try {
+ final Session session = login();
+ try {
+ final String name = toSafeName(username);
+ final String path = USERS_PATH + "/" + name;
+ final Node rootNode = session.getRootNode();
+ try {
+ rootNode.getNode(path);
+ getLogger().info("User already exists");
+ return false;
+ } catch (PathNotFoundException e) {
+ // user does not exist
+ }
+ Node parent;
+ try {
+ parent = rootNode.getNode(USERS_PATH);
+ } catch (PathNotFoundException e) {
+ // TODO: Need to consider whether should insist that parent
+ // TODO: path exists.
+ parent = rootNode.addNode(USERS_PATH);
+ }
+
+ Node node = parent.addNode(name);
+ node.setProperty(USERNAME_PROPERTY, username);
+ final String hashedPassword;
+ if (password == null)
+ {
+ // Support easy password reset
+ hashedPassword = "";
+ }
+ else
+ {
+ hashedPassword = JCRUser.hashPassword(username, password);
+ }
+ node.setProperty(PASSWD_PROPERTY, hashedPassword);
+ session.save();
+ return true;
+ } finally {
+ session.logout();
+ }
+
+ } catch (RepositoryException e) {
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Failed to add user: " + username, e);
+ }
+ }
+
+ return false;
}
}
Modified: james/server/trunk/user-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java (original)
+++ james/server/trunk/user-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java Thu Dec 30 17:11:52 2010
@@ -27,10 +27,10 @@ import org.apache.jackrabbit.core.Reposi
import org.apache.jackrabbit.core.config.RepositoryConfig;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.jcr.JCRUsersRepository;
-import org.apache.james.user.lib.MockUsersRepositoryTest;
+import org.apache.james.user.lib.AbstractUsersRepositoryTest;
import org.xml.sax.InputSource;
-public class JcrUserRepositoryTest extends MockUsersRepositoryTest {
+public class JcrUserRepositoryTest extends AbstractUsersRepositoryTest {
private static final String JACKRABBIT_HOME = "target/jackrabbit";
private RepositoryImpl repository;
Modified: james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepository.java (original)
+++ james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepository.java Thu Dec 30 17:11:52 2010
@@ -28,7 +28,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import javax.annotation.PostConstruct;
/**
@@ -90,9 +89,13 @@ public class DefaultUsersJdbcRepository
* @see org.apache.james.user.api.UsersRepository#addUser(java.lang.String, java.lang.String)
*/
public boolean addUser(String username, String password) {
+ if (contains(username) == true || isValidUsername(username) == false) {
+ return false;
+ }
User newbie = new DefaultUser(username, "SHA");
newbie.setPassword(password);
- return addUser(newbie);
+ doAddUser(newbie);
+ return true;
}
Modified: james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java (original)
+++ james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/JamesUsersJdbcRepository.java Thu Dec 30 17:11:52 2010
@@ -148,14 +148,5 @@ public class JamesUsersJdbcRepository ex
- /**
- * @see org.apache.james.user.api.UsersRepository#addUser(java.lang.String,
- * java.lang.String)
- */
- public boolean addUser(String username, String password) {
- User newbie = new DefaultJamesUser(username, "SHA");
- newbie.setPassword(password);
- return addUser(newbie);
- }
}
Modified: james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java (original)
+++ james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java Thu Dec 30 17:11:52 2010
@@ -29,7 +29,7 @@ import org.apache.james.lifecycle.api.Li
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.jdbc.AbstractJdbcUsersRepository;
import org.apache.james.user.jdbc.DefaultUsersJdbcRepository;
-import org.apache.james.user.lib.MockUsersRepositoryTest;
+import org.apache.james.user.lib.AbstractUsersRepositoryTest;
import java.util.Iterator;
@@ -38,7 +38,7 @@ import javax.sql.DataSource;
/**
* Test basic behaviours of UsersFileRepository
*/
-public class DefaultUsersJdbcRepositoryTest extends MockUsersRepositoryTest {
+public class DefaultUsersJdbcRepositoryTest extends AbstractUsersRepositoryTest {
/**
* Create the repository to be tested.
Modified: james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java (original)
+++ james/server/trunk/user-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java Thu Dec 30 17:11:52 2010
@@ -31,7 +31,7 @@ import org.apache.james.user.api.UsersRe
import org.apache.james.user.api.model.JamesUser;
import org.apache.james.user.jdbc.AbstractJdbcUsersRepository;
import org.apache.james.user.jdbc.JamesUsersJdbcRepository;
-import org.apache.james.user.lib.MockUsersRepositoryTest;
+import org.apache.james.user.lib.AbstractUsersRepositoryTest;
import org.apache.james.vut.api.VirtualUserTable;
import org.apache.mailet.MailAddress;
@@ -43,7 +43,7 @@ import javax.sql.DataSource;
/**
* Test basic behaviours of UsersFileRepository
*/
-public class JamesUsersJdbcRepositoryTest extends MockUsersRepositoryTest {
+public class JamesUsersJdbcRepositoryTest extends AbstractUsersRepositoryTest {
/**
* Create the repository to be tested.
Modified: james/server/trunk/user-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java (original)
+++ james/server/trunk/user-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java Thu Dec 30 17:11:52 2010
@@ -33,27 +33,21 @@ 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.james.lifecycle.api.Configurable;
-import org.apache.james.lifecycle.api.LogEnabled;
-import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.model.User;
import org.apache.james.user.jpa.model.JPAUser;
+import org.apache.james.user.lib.AbstractUsersRepository;
/**
* JPA based UserRepository
*
*/
-public class JPAUsersRepository implements UsersRepository, Configurable, LogEnabled {
+public class JPAUsersRepository extends AbstractUsersRepository {
private EntityManagerFactory entityManagerFactory;
private String algo;
- private Log logger;
-
- private boolean virtualHosting;
-
/**
* Sets entity manager.
@@ -71,69 +65,7 @@ public class JPAUsersRepository implemen
createEntityManager().close();
}
- /**
- * Adds a user to the repository with the specified User object.
- *
- * @param user
- * the user to be added
- *
- * @return true if succesful, false otherwise
- * @since James 1.2.2
- *
- * @deprecated James 2.4 user should be added using username/password
- * because specific implementations of UsersRepository will
- * support specific implementations of users object.
- */
- public boolean addUser(User user) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds a user to the repository with the specified attributes. In current
- * implementations, the Object attributes is generally a String password.
- *
- * @param name
- * the name of the user to be added
- * @param attributes
- * see decription
- *
- * @deprecated James 2.4 user is always added using username/password and
- * eventually modified by retrieving it later.
- */
- public void addUser(String name, Object attributes) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds a user to the repository with the specified password
- *
- * @param username
- * the username of the user to be added
- * @param password
- * the password of the user to add
- * @return true if succesful, false otherwise
- *
- * @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, algo);
- entityManager.persist(user);
- transaction.commit();
- return true;
- } catch (PersistenceException e) {
- logger.debug("Failed to save user", e);
- if (transaction.isActive()) {
- transaction.rollback();
- }
- } finally {
- entityManager.close();
- }
- return false;
- }
+
/**
* Get the user object with the specified user name. Return null if no such
@@ -151,29 +83,13 @@ public class JPAUsersRepository implemen
try {
return (JPAUser) entityManager.createNamedQuery("findUserByName").setParameter("name", name).getSingleResult();
} catch (PersistenceException e) {
- logger.debug("Failed to find user", e);
+ getLogger().debug("Failed to find user", e);
return null;
} finally {
entityManager.close();
}
}
- /**
- * Get the user object with the specified user name. Match user naems on a
- * case insensitive basis. Return null if no such user.
- *
- * @param name
- * the name of the user to retrieve
- * @return the user being retrieved, null if the user doesn't exist
- *
- * @since James 1.2.2
- * @deprecated James 2.4 now caseSensitive is a property of the repository
- * implementations and the getUserByName will search according
- * to this property.
- */
- public User getUserByNameCaseInsensitive(String name) {
- throw new UnsupportedOperationException();
- }
/**
* Returns the user name of the user matching name on an equalsIgnoreCase
@@ -207,11 +123,11 @@ public class JPAUsersRepository implemen
entityManager.merge(user);
transaction.commit();
} else {
- logger.debug("User not found");
+ getLogger().debug("User not found");
return false;
}
} catch (PersistenceException e) {
- logger.debug("Failed to update user", e);
+ getLogger().debug("Failed to update user", e);
if (transaction.isActive()) {
transaction.rollback();
}
@@ -237,7 +153,7 @@ public class JPAUsersRepository implemen
entityManager.createNamedQuery("deleteUserByName").setParameter("name", name).executeUpdate();
transaction.commit();
} catch (PersistenceException e) {
- logger.debug("Failed to remove user", e);
+ getLogger().debug("Failed to remove user", e);
if (transaction.isActive()) {
transaction.rollback();
}
@@ -259,7 +175,7 @@ public class JPAUsersRepository implemen
try {
return ((Long) entityManager.createNamedQuery("containsUser").setParameter("name", name).getSingleResult()).longValue() > 0;
} catch (PersistenceException e) {
- logger.debug("Failed to find user", e);
+ getLogger().debug("Failed to find user", e);
return false;
} finally {
entityManager.close();
@@ -267,22 +183,6 @@ public class JPAUsersRepository implemen
}
/**
- * Returns whether or not this user is in the repository. Names are matched
- * on a case insensitive basis.
- *
- * @param name
- * the name to check in the repository
- * @return whether the user is in the repository
- *
- * @deprecated James 2.4 now caseSensitive is a property of the repository
- * implementations and the contains will search according to
- * this property.
- */
- public boolean containsCaseInsensitive(String name) {
- throw new UnsupportedOperationException();
- }
-
- /**
* Test if user with name 'name' has password 'password'.
*
* @param name
@@ -317,7 +217,7 @@ public class JPAUsersRepository implemen
try {
return ((Long) entityManager.createNamedQuery("countUsers").getSingleResult()).intValue();
} catch (PersistenceException e) {
- logger.debug("Failed to find user", e);
+ getLogger().debug("Failed to find user", e);
return 0;
} finally {
entityManager.close();
@@ -338,29 +238,20 @@ public class JPAUsersRepository implemen
return Collections.unmodifiableList(entityManager.createNamedQuery("listUserNames").getResultList()).iterator();
} catch (PersistenceException e) {
- logger.debug("Failed to find user", e);
+ getLogger().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");
- virtualHosting = config.getBoolean("enableVirtualHosting", false);
-
- }
/*
* (non-Javadoc)
- * @see org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
+ * @see org.apache.james.user.lib.AbstractUsersRepository#doConfigure(org.apache.commons.configuration.HierarchicalConfiguration)
*/
- public void setLog(Log log) {
- this.logger = log;
+ public void doConfigure(HierarchicalConfiguration config) throws ConfigurationException {
+ algo = config.getString("algorithm","MD5");
}
/**
@@ -372,12 +263,29 @@ public class JPAUsersRepository implemen
return entityManagerFactory.createEntityManager();
}
+
/*
* (non-Javadoc)
- * @see org.apache.james.user.api.UsersRepository#supportVirtualHosting()
+ * @see org.apache.james.user.lib.AbstractUsersRepository#doAddUser(java.lang.String, java.lang.String)
*/
- public boolean supportVirtualHosting() {
- return virtualHosting;
+ protected boolean doAddUser(String username, String password) {
+ EntityManager entityManager = entityManagerFactory.createEntityManager();
+ final EntityTransaction transaction = entityManager.getTransaction();
+ try {
+ transaction.begin();
+ JPAUser user = new JPAUser(username, password, algo);
+ entityManager.persist(user);
+ transaction.commit();
+ return true;
+ } catch (PersistenceException e) {
+ getLogger().debug("Failed to save user", e);
+ if (transaction.isActive()) {
+ transaction.rollback();
+ }
+ } finally {
+ entityManager.close();
+ }
+ return false;
}
}
Modified: james/server/trunk/user-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java (original)
+++ james/server/trunk/user-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java Thu Dec 30 17:11:52 2010
@@ -25,13 +25,13 @@ import org.apache.commons.logging.impl.S
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.jpa.JPAUsersRepository;
import org.apache.james.user.jpa.model.JPAUser;
-import org.apache.james.user.lib.MockUsersRepositoryTest;
+import org.apache.james.user.lib.AbstractUsersRepositoryTest;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAEntityTransaction;
import org.apache.openjpa.persistence.OpenJPAPersistence;
-public class JpaUsersRepositoryTest extends MockUsersRepositoryTest {
+public class JpaUsersRepositoryTest extends AbstractUsersRepositoryTest {
private HashMap<String, String> properties;
private OpenJPAEntityManagerFactory factory;
Modified: james/server/trunk/user-library/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/pom.xml?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-library/pom.xml (original)
+++ james/server/trunk/user-library/pom.xml Thu Dec 30 17:11:52 2010
@@ -42,6 +42,10 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-domainlist-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-mailet</artifactId>
</dependency>
Modified: james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java Thu Dec 30 17:11:52 2010
@@ -23,15 +23,12 @@ package org.apache.james.user.lib;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.commons.logging.Log;
-import org.apache.james.lifecycle.api.Configurable;
-import org.apache.james.lifecycle.api.LogEnabled;
import org.apache.james.user.api.JamesUsersRepository;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.model.JamesUser;
import org.apache.james.user.api.model.User;
-import org.apache.james.user.lib.model.DefaultUser;
-import org.apache.james.vut.lib.AbstractReadOnlyVirtualUserTable;
+import org.apache.james.user.lib.model.DefaultJamesUser;
+import org.apache.james.vut.api.VirtualUserTable;
import java.util.ArrayList;
import java.util.Collection;
@@ -39,8 +36,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
/**
* A partial implementation of a Repository to store users.
@@ -50,7 +45,7 @@ import javax.annotation.Resource;
*@deprecated Please implement {@link UsersRepository}
*/
@Deprecated
-public abstract class AbstractJamesUsersRepository extends AbstractReadOnlyVirtualUserTable implements JamesUsersRepository, LogEnabled, Configurable {
+public abstract class AbstractJamesUsersRepository extends AbstractUsersRepository implements JamesUsersRepository, VirtualUserTable {
/**
* Ignore case in usernames
@@ -68,30 +63,16 @@ public abstract class AbstractJamesUsers
protected boolean enableForwarding;
- private Log logger;
-
- private boolean virtualHosting;
-
- public void setLog(Log logger) {
- this.logger = logger;
- }
- public void configure(HierarchicalConfiguration configuration) throws ConfigurationException{
+
+ @Override
+ public void configure(HierarchicalConfiguration configuration) throws ConfigurationException {
setIgnoreCase(configuration.getBoolean("ignoreCase", false));
setEnableAliases(configuration.getBoolean("enableAliases", false));
setEnableForwarding(configuration.getBoolean("enableForwarding", false));
- virtualHosting = configuration.getBoolean("enableVirtualHosting", false);
-
- doConfigure(configuration);
- }
-
- protected void doConfigure(HierarchicalConfiguration config) throws ConfigurationException{
-
+ super.configure(configuration);
}
- public void setEnableVirtualHosting(boolean virtualHosting) {
- this.virtualHosting = virtualHosting;
- }
/**
* Adds a user to the underlying Repository. The user name must not clash
* with an existing user.
@@ -110,47 +91,16 @@ public abstract class AbstractJamesUsers
protected abstract void doUpdateUser(User user);
- /**
- * Adds a user to the repository with the specified attributes. In current
- * implementations, the Object attributes is generally a String password.
- *
- * @param name
- * the name of the user to be added
- * @param attributes
- * the password value as a String
- */
- public void addUser(String name, Object attributes) {
- if (attributes instanceof String) {
- User newbie = new DefaultUser(name, "SHA");
- newbie.setPassword((String) attributes);
- addUser(newbie);
- } else {
- throw new RuntimeException("Improper use of deprecated method"
- + " - use addUser(User user)");
- }
- }
-
- //
- // UsersRepository interface implementation.
- //
- /**
- * Adds a user to the repository with the specified User object. Users names
- * must be unique-case-insensitive in the repository.
- *
- * @param user
- * the user to be added
- *
- * @return true if succesful, false otherwise
- * @since James 1.2.2
- */
- public boolean addUser(User user) {
- String username = user.getUserName();
- if (contains(username)) {
- return false;
- }
- doAddUser(user);
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.user.lib.AbstractUsersRepository#doAddUser(java.lang.String, java.lang.String)
+ */
+ protected boolean doAddUser(String username, String password) {
+ User newbie = new DefaultJamesUser(username, "SHA");
+ newbie.setPassword(password);
+ doAddUser(newbie);
return true;
}
@@ -215,11 +165,6 @@ public abstract class AbstractJamesUsers
}
}
- protected Log getLogger() {
- return logger;
- }
-
-
/**
* @see org.apache.james.user.api.JamesUsersRepository#setEnableAliases(boolean)
@@ -281,12 +226,75 @@ public abstract class AbstractJamesUsers
return new ArrayList<String>();
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.user.api.UsersRepository#supportVirtualHosting()
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean addAddressMapping(String user, String domain, String address) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean addErrorMapping(String user, String domain, String error) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean addMapping(String user, String domain, String mapping) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean addRegexMapping(String user, String domain, String regex) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean removeAddressMapping(String user, String domain, String address) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean removeErrorMapping(String user, String domain, String error) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
+ */
+ public boolean removeMapping(String user, String domain, String mapping) {
+ return false;
+ }
+
+ /**
+ * Do nothing and return false
*/
- public boolean supportVirtualHosting() {
- return virtualHosting;
+ public boolean removeRegexMapping(String user, String domain, String regex) {
+ return false;
}
Added: james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java?rev=1053944&view=auto
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java (added)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java Thu Dec 30 17:11:52 2010
@@ -0,0 +1,130 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+
+package org.apache.james.user.lib;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.james.domainlist.api.DomainList;
+import org.apache.james.lifecycle.api.Configurable;
+import org.apache.james.lifecycle.api.LogEnabled;
+import org.apache.james.user.api.UsersRepository;
+
+public abstract class AbstractUsersRepository implements UsersRepository, LogEnabled, Configurable{
+
+ private DomainList domainList;
+ private boolean virtualHosting;
+ private Log logger;
+
+
+ protected Log getLogger() {
+ return logger;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.lifecycle.api.LogEnabled#setLog(org.apache.commons.logging.Log)
+ */
+ public void setLog(Log logger) {
+ this.logger = logger;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.lifecycle.api.Configurable#configure(org.apache.commons.configuration.HierarchicalConfiguration)
+ */
+ public void configure(HierarchicalConfiguration configuration) throws ConfigurationException{
+
+ virtualHosting = configuration.getBoolean("enableVirtualHosting", false);
+
+ doConfigure(configuration);
+ }
+
+
+ protected void doConfigure(HierarchicalConfiguration config) throws ConfigurationException{
+
+ }
+
+ public void setEnableVirtualHosting(boolean virtualHosting) {
+ this.virtualHosting = virtualHosting;
+ }
+
+ @Resource(name="domainlist")
+ public void setDomainList(DomainList domainList) {
+ this.domainList = domainList;
+ }
+
+ protected boolean isValidUsername(String username) {
+ int i = username.indexOf("@");
+ if (supportVirtualHosting()) {
+ // need a @ in the username
+ if (i == -1) {
+ return false;
+ } else {
+ String domain = username.substring(i + 1);
+ if (domainList.containsDomain(domain) == false) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+ } else {
+ // @ only allowed when virtualhosting is supported
+ if (i != -1) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.user.api.UsersRepository#addUser(java.lang.String, java.lang.String)
+ */
+ public boolean addUser(String username, String password) {
+
+ if (contains(username) == false && isValidUsername(username)) {
+ return doAddUser(username, password);
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.user.api.UsersRepository#supportVirtualHosting()
+ */
+ public boolean supportVirtualHosting() {
+ return virtualHosting;
+ }
+
+ /**
+ * Add the user with the given username and password
+ *
+ * @param username
+ * @param password
+ * @return successful
+ */
+ protected abstract boolean doAddUser(String username, String password);
+}
Copied: james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java (from r1052807, james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/MockUsersRepositoryTest.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java?p2=james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java&p1=james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/MockUsersRepositoryTest.java&r1=1052807&r2=1053944&rev=1053944&view=diff
==============================================================================
--- james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/MockUsersRepositoryTest.java (original)
+++ james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java Thu Dec 30 17:11:52 2010
@@ -19,23 +19,19 @@
package org.apache.james.user.lib;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
-import org.apache.commons.logging.impl.SimpleLog;
-import org.apache.james.lifecycle.api.LifecycleUtil;
-import org.apache.james.user.api.UsersRepository;
-import org.apache.james.user.api.model.User;
-import org.apache.james.user.lib.mock.MockUsersRepository;
-import org.apache.james.user.lib.model.DefaultJamesUser;
-
import java.util.ArrayList;
import java.util.Iterator;
import junit.framework.TestCase;
+import org.apache.james.lifecycle.api.LifecycleUtil;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.james.user.api.model.User;
+
/**
* Test basic behaviours of UsersFileRepository
*/
-public class MockUsersRepositoryTest extends TestCase {
+public abstract class AbstractUsersRepositoryTest extends TestCase {
/**
* Users repository
@@ -48,44 +44,29 @@ public class MockUsersRepositoryTest ext
* @return the user repository
* @throws Exception
*/
- protected UsersRepository getUsersRepository() throws Exception {
- MockUsersRepository repos = new MockUsersRepository();
- repos.setLog(new SimpleLog("MockLog"));
- repos.configure(new DefaultConfigurationBuilder());
- return repos;
- }
+ protected abstract UsersRepository getUsersRepository() throws Exception;
public void testUsersRepositoryEmpty() {
assertEquals("users repository not empty", 0, usersRepository.countUsers());
assertFalse("users repository not empty", usersRepository.list().hasNext());
}
- @SuppressWarnings("deprecation")
public void testAddUserOnce() {
boolean res = usersRepository.addUser("username", "password");
assertTrue("User not added", res);
res = usersRepository.addUser("username", "password2");
assertFalse("User added twice!", res);
try {
- usersRepository.addUser("username2", (Object) "password2");
+ usersRepository.addUser("username2", "password2");
assertTrue(usersRepository.contains("username2"));
- User u = new DefaultJamesUser("username3","SHA","password3");
- usersRepository.addUser(u);
+ usersRepository.addUser("username3", "password3");
assertTrue(usersRepository.contains("username3"));
} catch (UnsupportedOperationException e) {
}
- try {
- usersRepository.addUser("username2", new Object());
- fail("adduser should throw an exception if a non string is passed");
- } catch (Exception e) {
-
- }
-
}
- @SuppressWarnings("deprecation")
public void testUserAddedIsFound() {
boolean res = usersRepository.addUser("username", "password");
assertTrue("User not added", res);
@@ -93,11 +74,6 @@ public class MockUsersRepositoryTest ext
assertNotNull(user);
assertEquals("username does not match", user.getUserName(), "username");
assertTrue("user not contained in the repository", usersRepository.contains("username"));
- try {
- assertTrue("case insensitive user not found in the repository", usersRepository.containsCaseInsensitive("userName"));
- } catch (UnsupportedOperationException e) {
- // some implementation could not support deprecated methods
- }
User u = usersRepository.getUserByName("uSERNAMe");
assertNull("found the user searching for a different case!", u);
@@ -182,18 +158,7 @@ public class MockUsersRepositoryTest ext
}
- @SuppressWarnings("deprecation")
- public void testCaseInsensitivesMethods() {
- assertTrue("User not added", usersRepository.addUser("userName", "password"));
- try {
- assertTrue(usersRepository.containsCaseInsensitive("usERname"));
- assertNotNull(usersRepository.getUserByNameCaseInsensitive("userNAMe"));
- } catch (UnsupportedOperationException e) {
- // some implementations do not support it.
- }
- assertEquals(usersRepository.addUser("USERNAME", "password"), getAllowMultipleUsersWithDifferentCases());
-
- }
+
/**
Modified: james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/mock/MockUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/mock/MockUsersRepository.java?rev=1053944&r1=1053943&r2=1053944&view=diff
==============================================================================
--- james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/mock/MockUsersRepository.java (original)
+++ james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/mock/MockUsersRepository.java Thu Dec 30 17:11:52 2010
@@ -186,4 +186,10 @@ public class MockUsersRepository extends
protected void doUpdateUser(User user) {
// unused
}
+
+ @Override
+ protected boolean doAddUser(String username, String password) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org