User.java

00001 
00027 package org.objectweb.jonas.security.realm.principals;
00028 
00029 import java.io.Serializable;
00030 import java.security.Principal;
00031 import java.util.ArrayList;
00032 import java.util.Enumeration;
00033 import java.util.StringTokenizer;
00034 import java.util.Vector;
00035 
00036 import org.objectweb.jonas.security.realm.lib.HashHelper;
00037 import org.objectweb.jonas.security.realm.lib.HashPassword;
00038 import org.objectweb.jonas.security.realm.lib.XML;
00039 
00047 public class User implements Principal, Serializable, UserMBean {
00048 
00052     protected static final String SEPARATOR = ",";
00053 
00057     private String name = null;
00058 
00062     private String password = null;
00063 
00067     private HashPassword hashPassword = null;
00068 
00072     private Vector groups = new Vector();
00073 
00077     private Vector roles = new Vector();
00078 
00082     private ArrayList combinedRoles = new ArrayList();
00083 
00087     public User() {
00088     }
00089 
00095     public User(String name, String password) {
00096         setName(name);
00097         setPassword(password);
00098     }
00099 
00104     public void setName(String name) {
00105         if (name.startsWith("##DN##")) {
00106             //replace problematic caracters(for mbeans) by special caracters
00107             this.name = name.replace('=', '#').replace(',', '%').replace(' ', '$');
00108         } else {
00109             this.name = name;
00110         }
00111     }
00112 
00117     public String getName() {
00118         return name;
00119     }
00120 
00125     public String getPassword() {
00126         return password;
00127     }
00128 
00133     public void setPassword(String password) {
00134         this.password = password;
00135         setHashPassword(HashHelper.getHashPassword(password));
00136     }
00137 
00142     protected void setHashPassword(HashPassword hashPassword) {
00143         this.hashPassword = hashPassword;
00144     }
00145 
00150     public HashPassword getHashPassword() {
00151         return hashPassword;
00152     }
00153 
00158     public void setGroups(String groups) {
00159         StringTokenizer st = new StringTokenizer(groups, SEPARATOR);
00160         String group = null;
00161         while (st.hasMoreTokens()) {
00162             group = st.nextToken().trim();
00163             addGroup(group);
00164         }
00165     }
00166 
00171     public String getGroups() {
00172         String groupsList = "";
00173         Enumeration g = groups.elements();
00174         int nb = 0;
00175         String group = null;
00176 
00177         while (g.hasMoreElements()) {
00178             if (nb > 0) {
00179                 groupsList += ", ";
00180             }
00181             group = (String) g.nextElement();
00182             groupsList += group;
00183         }
00184         return groupsList;
00185 
00186     }
00187 
00192     public String[] getArrayGroups() {
00193         return ((String[]) groups.toArray(new String[groups.size()]));
00194     }
00195 
00200     public void setRoles(String roles) {
00201         if (roles != null) {
00202             StringTokenizer st = new StringTokenizer(roles, SEPARATOR);
00203             String role = null;
00204             while (st.hasMoreTokens()) {
00205                 role = st.nextToken().trim();
00206                 addRole(role);
00207             }
00208         }
00209     }
00210 
00215     public void addGroup(String group) {
00216         if (!groups.contains(group)) {
00217             this.groups.addElement(group);
00218         }
00219     }
00220 
00225     public void addRole(String role) {
00226         if (!roles.contains(role)) {
00227             this.roles.addElement(role);
00228         }
00229     }
00230 
00235     public void removeGroup(String group) {
00236         if (groups.contains(group)) {
00237             this.groups.removeElement(group);
00238         }
00239     }
00240 
00245     public void removeRole(String role) {
00246         if (roles.contains(role)) {
00247             this.roles.removeElement(role);
00248         }
00249     }
00250 
00255     public String getRoles() {
00256         String rolesList = "";
00257         Enumeration r = roles.elements();
00258         int nb = 0;
00259         String role = null;
00260 
00261         while (r.hasMoreElements()) {
00262             if (nb > 0) {
00263                 rolesList += ", ";
00264             }
00265             role = (String) r.nextElement();
00266             rolesList += role;
00267         }
00268         return rolesList;
00269     }
00270 
00275     public void setCombinedRoles(ArrayList combinedRoles) {
00276         this.combinedRoles = combinedRoles;
00277     }
00278 
00283     public ArrayList getCombinedRoles() {
00284         return combinedRoles;
00285     }
00286 
00291     public String[] getArrayRoles() {
00292         return ((String[]) roles.toArray(new String[roles.size()]));
00293     }
00294 
00299     public String toXML() {
00300         StringBuffer xml = new StringBuffer("<user name=\"");
00301         xml.append(name);
00302         xml.append("\" password=\"");
00303         if (password != null) {
00304             xml.append(password);
00305         }
00306         xml.append("\"");
00307         XML.appendVectorToBuffer("groups=", xml, groups);
00308         XML.appendVectorToBuffer("roles=", xml, roles);
00309         xml.append(" />");
00310         return xml.toString();
00311     }
00312 
00317     public String toString() {
00318         return this.toXML();
00319     }
00320 
00321 }

Generated on Tue Feb 15 15:05:14 2005 for JOnAS by  doxygen 1.3.9.1