1 package no.feide.mellon.jaas.principals;
2
3 import java.security.Principal;
4
5 /***
6 * This is the general Principal class.
7 *
8 * @author Rikke Amilde Løvlid
9 */
10
11 public class MoriaPrincipal implements Principal{
12
13 protected String attributeName;
14 protected String attributeValue;
15
16
17 /***
18 * @param name the principal name that are used in the policy file,
19 * has to have the format attributeName:attributeValue,
20 * ex: eduPersonAffiliation:student
21 */
22 public MoriaPrincipal(String name){
23 if(name == null){
24 throw new NullPointerException("illegal null input");
25 }
26 if(name.indexOf(":")!=-1){
27 this.attributeName = name.substring(0, name.indexOf(":"));
28 this.attributeValue = name.substring(name.indexOf(":")+1);
29 }
30 }
31 /***
32 * @param attributeName the FEIDE attribute name
33 * @param attributeValue the FEIDE attribute value
34 */
35 public MoriaPrincipal(String attributeName, String attributeValue){
36 if(attributeName == null || attributeValue == null){
37 throw new NullPointerException("illegal null input");
38 }
39 this.attributeName = attributeName;
40 this.attributeValue = attributeValue;
41 }
42
43 /***
44 * @return attributeName:attributeValue
45 */
46 public String getName(){
47 return attributeName + ":" + attributeValue;
48 }
49
50 public String getAttributeName(){
51 return attributeName;
52 }
53
54 public String getAttributeValue(){
55 return attributeValue;
56 }
57
58 /***
59 * @return MoriaPrincipal: attributeName:attributeValue
60 */
61 public String toString(){
62 return ("MoriaPrincipal: " + this.getName());
63 }
64
65 /***
66 * @param o the object we want to compare to <code>this</code>
67 * @return true if <code>this</code> is the same object as <code>o</code> or
68 * <code>this</code> and <code>o</code> have the same
69 * <code>attributeName</code> and </code>attributeValue</code>.
70 * @return false otherwise
71 */
72 public boolean equals(Object o){
73 if(o == null){
74 return false;
75 }
76 if(this == o){
77 return true;
78 }
79 if(!(o instanceof MoriaPrincipal)){
80 return false;
81 }
82 return this.getName().equals(((MoriaPrincipal)o).getName());
83 }
84
85 public int hashCode(){
86 return this.getName().hashCode();
87 }
88
89
90 }