diff --git a/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java b/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java
index a2132d28..66c4f7d7 100644
--- a/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java
+++ b/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java
@@ -1,5 +1,5 @@
//
-// $Id: UserRepository.java,v 1.38 2004/01/31 06:24:01 mdb Exp $
+// $Id: UserRepository.java,v 1.39 2004/01/31 06:38:05 mdb Exp $
//
// samskivert library - useful routines for java programs
// Copyright (C) 2001 Michael Bayne
@@ -97,11 +97,8 @@ public class UserRepository extends JORARepository
/**
* Requests that a new user be created in the repository.
*
- * @param username the username of the new user to create. Usernames
- * must consist only of characters that match the following regular
- * expression: [_A-Za-z0-9]+ and be longer than two
- * characters.
- * @param password the (unencrypted) password for the new user.
+ * @param uname the username of the new user to create.
+ * @param pass the (unencrypted) password for the new user.
* @param realname the user's real name.
* @param email the user's email address.
* @param siteId the unique identifier of the site through which this
@@ -112,12 +109,11 @@ public class UserRepository extends JORARepository
*
* @return The userid of the newly created user.
*/
- public int createUser (String username, String password, String realname,
+ public int createUser (Username uname, String pass, String realname,
String email, int siteId)
- throws InvalidUsernameException, UserExistsException,
- PersistenceException
+ throws UserExistsException, PersistenceException
{
- return createUser(username, new Password(username, password),
+ return createUser(uname, new Password(uname.getUsername(), pass),
realname, email, siteId);
}
@@ -125,10 +121,9 @@ public class UserRepository extends JORARepository
* Like {@link #createUser(String,String,String,String,int)} except
* that the supplied password has already been encrypted.
*/
- public int createUser (String username, Password password, String realname,
- String email, int siteId)
- throws InvalidUsernameException, UserExistsException,
- PersistenceException
+ public int createUser (Username username, Password password,
+ String realname, String email, int siteId)
+ throws UserExistsException, PersistenceException
{
// create a new user object...
User user = new User();
@@ -143,23 +138,11 @@ public class UserRepository extends JORARepository
* in preparation for inserting the record into the database for the
* first time.
*/
- protected void populateUser (User user, String username, Password password,
+ protected void populateUser (User user, Username name, Password pass,
String realname, String email, int siteId)
- throws InvalidUsernameException
{
- // check minimum length
- if (username.length() < MINIMUM_USERNAME_LENGTH) {
- throw new InvalidUsernameException("error.username_too_short");
- }
-
- // check that it's only valid characters
- if (!username.matches("^[_A-Za-z0-9]+$")) {
- Log.info("Mismatch " + username + ".");
- throw new InvalidUsernameException("error.invalid_username");
- }
-
- user.username = username;
- user.password = password.getEncrypted();
+ user.username = name.getUsername();
+ user.password = pass.getEncrypted();
user.realname = realname;
user.email = email;
user.created = new Date(System.currentTimeMillis());
@@ -605,10 +588,10 @@ public class UserRepository extends JORARepository
System.out.println(rep.loadUser("mdb"));
System.out.println(rep.loadUserBySession("auth"));
- rep.createUser("samskivert", "foobar", "Michael Bayne",
- "mdb@samskivert.com",
+ rep.createUser(new Username("samskivert"), "foobar",
+ "Michael Bayne", "mdb@samskivert.com",
SiteIdentifier.DEFAULT_SITE_ID);
- rep.createUser("mdb", "foobar", "Michael Bayne",
+ rep.createUser(new Username("mdb"), "foobar", "Michael Bayne",
"mdb@samskivert.com",
SiteIdentifier.DEFAULT_SITE_ID);
@@ -621,7 +604,4 @@ public class UserRepository extends JORARepository
/** A wrapper that provides access to the userstable. */
protected Table _utable;
-
- /** The minimum allowable length of a username. */
- protected static final int MINIMUM_USERNAME_LENGTH = 3;
}
diff --git a/projects/samskivert/src/java/com/samskivert/servlet/user/Username.java b/projects/samskivert/src/java/com/samskivert/servlet/user/Username.java
new file mode 100644
index 00000000..3de0f826
--- /dev/null
+++ b/projects/samskivert/src/java/com/samskivert/servlet/user/Username.java
@@ -0,0 +1,52 @@
+//
+// $Id: Username.java,v 1.1 2004/01/31 06:38:05 mdb Exp $
+
+package com.samskivert.servlet.user;
+
+/**
+ * Allows us to require a valid username as a parameter without having to
+ * do the checking ourselves.
+ */
+public class Username
+{
+ /**
+ * Creates a username instance. Usernames must consist only of
+ * characters that match the following regular expression:
+ * [_A-Za-z0-9]+ and be longer than two characters.
+ */
+ public Username (String username)
+ throws InvalidUsernameException
+ {
+ // check minimum length
+ if (username.length() < MINIMUM_USERNAME_LENGTH) {
+ throw new InvalidUsernameException("error.username_too_short");
+ }
+
+ // check that it's only valid characters
+ if (!username.matches(NAME_REGEX)) {
+ throw new InvalidUsernameException("error.invalid_username");
+ }
+
+ _username = username;
+ }
+
+ /** Returns the text of this username. */
+ public String getUsername ()
+ {
+ return _username;
+ }
+
+ /** Returns a string representation of this instance. */
+ public String toString ()
+ {
+ return _username;
+ }
+
+ protected String _username;
+
+ /** The minimum allowable length of a username. */
+ protected static final int MINIMUM_USERNAME_LENGTH = 3;
+
+ /** The regular expression defining valid names. */
+ protected static final String NAME_REGEX = "^[_A-Za-z0-9]+$";
+}