- All Implemented Interfaces:
DtoFactory<UserName>
,FastExternalizable
,Internable<User.Name>
,Externalizable
,Serializable
,Comparable<User.Name>
- Enclosing class:
User
User
ids must:
- Be non-null
- Be non-empty
- Be between 1 and 32 characters
- Must start with
[a-z]
- The rest of the characters may contain
[a-z,0-9,_]
- A special exemption is made for the
mysql.session
andmysql.sys
reserved users added in MySQL 5.7. - Must be a valid
User.Name
- this is implied by the above rules
- Author:
- AO Industries, Inc.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The maximum length of a MySQL username.Fields inherited from class com.aoindustries.aoserv.client.linux.User.Name
LINUX_NAME_MAX_LENGTH
Fields inherited from class com.aoindustries.aoserv.client.account.User.Name
MAX_LENGTH, name
-
Constructor Summary
-
Method Summary
Methods inherited from class com.aoindustries.aoserv.client.account.User.Name
compareTo, equals, hashCode, readExternal, toString, writeExternal
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.io.Externalizable
readExternal, writeExternal
-
Field Details
-
MYSQL_NAME_MAX_LENGTH
public static final int MYSQL_NAME_MAX_LENGTHThe maximum length of a MySQL username.Implementation Note:
32 characters as of MySQL 5.7.8- See Also:
-
-
Constructor Details
-
Name
Deprecated.Only required for implementation, do not use directly.- See Also:
-
-
Method Details
-
validate
Validates aUser
name. -
valueOf
- Parameters:
name
- whennull
, returnsnull
- Throws:
ValidationException
-
validate
- Overrides:
validate
in classUser.Name
- Throws:
ValidationException
-
intern
Description copied from class:User.Name
Interns this name much in the same fashion asString.intern()
.Because this has subtypes, two
User.Name
that areUser.Name.equals(java.lang.Object)
may not necessarily return the same instance object after interning. Thus, unless you know objects are of the same class,User.Name.equals(java.lang.Object)
should still be used for equality check instead of theobj1 == obj2
shortcut.To more efficiently check post-interned equivalence, one could also do
obj1 == obj2 || (obj1.getClass() != obj2.getClass() && obj1.equals(obj2))
, but is it worth it?And then if we abuse the fact that interned user ids have an interned name, one could check equivalence of post-interned user ids as
obj1.getId() == obj2.getId()
, but once again, is it worth it? Just callUser.Name.equals(java.lang.Object)
.- Specified by:
intern
in interfaceInternable<User.Name>
- Overrides:
intern
in classUser.Name
- See Also:
-
getDto
- Specified by:
getDto
in interfaceDtoFactory<UserName>
- Overrides:
getDto
in classUser.Name
-
getSerialVersionUID
public long getSerialVersionUID()- Specified by:
getSerialVersionUID
in interfaceFastExternalizable
- Overrides:
getSerialVersionUID
in classUser.Name
-