Clover Coverage Report
Coverage timestamp: Sun Mar 23 2008 08:24:39 GMT
25   144   6   5
12   51   0.4   5
5     2  
1    
 
 
  MMERUnit       Line # 59 25 6 73.8% 0.7380952
 
No Tests
 
1    /*
2    * Copyright (c) 2006, University of Kent
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    *
8    * Redistributions of source code must retain the above copyright notice, this
9    * list of conditions and the following disclaimer.
10    *
11    * Redistributions in binary form must reproduce the above copyright notice,
12    * this list of conditions and the following disclaimer in the documentation
13    * and/or other materials provided with the distribution.
14    *
15    * 1. Neither the name of the University of Kent nor the names of its
16    * contributors may be used to endorse or promote products derived from this
17    * software without specific prior written permission.
18    *
19    * 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20    * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21    * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22    * PURPOSE ARE DISCLAIMED.
23    *
24    * 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31    * POSSIBILITY OF SUCH DAMAGE.
32    *
33    * 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
34    * IN THE CIRCUMSTANCES. IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
35    * SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
36    * SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
37    * GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
38    * TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
39    * IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
40    * SERIOUS FAULTS, IN THIS SOFTWARE.
41    *
42    * 5. This license is governed, except to the extent that local laws
43    * necessarily apply, by the laws of England and Wales.
44    */
45    package issrg.pba.rbac.policies;
46   
47    import issrg.pba.rbac.*;
48    import java.util.Map;
49    import java.util.Hashtable;
50    import java.util.Vector;
51   
52   
53    /**
54    * This is the class representing a MMER unit. A MMER policy may contains several MMER units.
55    *
56    * @author W. Xu
57    * @version 0.1
58    */
 
59    public class MMERUnit {
60   
61    /**
62    * This constructor creates the MMERUnit object.
63    *
64    * @params forbiddenCardinality is the forbidden cardinality of this MMER unit.
65    * @params mmer is a vector of MMER i.e. RoleBasedCredentials, mutually exclusive roles.
66    *
67    */
 
68  28 toggle public MMERUnit(int forbiddenCardinality, java.util.Vector mmer) {
69  28 this.forbiddenCardinality = forbiddenCardinality;
70  28 this.mmer = mmer;
71    }
72   
73    public int forbiddenCardinality;
74    int matchCount = 0;
75    java.util.Vector mmer; // this is a vector of RoleBasedCredentials, mutually exclusive roles
76    java.util.Vector mmerBackup; // this is a clone of the above mmer
77   
78    /**
79    * This method returns the current match count of MMER,
80    * i.e. how many MMER have been matched by the user roles in this MMER Unit.
81    */
 
82  26 toggle public int getMatchCount(){
83  26 return matchCount;
84    }
85   
86    /**
87    * This method starts a new matching between user roles and this MMER unit.
88    */
 
89  32 toggle public void startMatch(){
90  32 mmerBackup = (java.util.Vector) mmer.clone();
91  32 matchCount = 0;
92    }
93   
94    /**
95    * This method compare mmer with the input vector V -- an array of user roles,
96    * to determine if any of user roles match mmer roles. Once matched, remove the user role
97    * from the mmer role set. Once the matched number reaches forbinddenCardinality, then
98    * return true.
99   
100    * return true if the input user roles vector matches any of the MMER roles in this MMER unit AND the forbeddenCardinality
101    * is reached; otherwise return false.
102    */
 
103  40 toggle public boolean MMERMatches(Vector V){
104  0 if (V==null) return false;
105   
106  109 loop: for (int i = mmerBackup.size()-1; i>=0 ; --i ) {
107  77 RoleBasedCredentials r = (RoleBasedCredentials) mmerBackup.get(i);
108  113 for (int j = V.size()-1; j>= 0 ; --j ) {
109  71 issrg.pba.Credentials pc =
110    ((ExpirableCredentials)(V.get(j))).getExpirable();
111  71 if(r.contains(pc)) {
112    //they are equal, so ignore it from mmer
113  35 mmerBackup.remove(i);
114  35 V.remove(j);
115  35 ++ matchCount;
116  35 if (matchCount >= forbiddenCardinality) {
117    //System.out.println("mmer rule broken " );
118  8 return true;
119    }
120  27 continue loop;
121    }
122    }
123    }
124   
125  32 return false;
126    }
127   
128    /**
129    * This method is to output all the role information in the MMER unit as a String. This is for testing purposes.
130    */
 
131  0 toggle public String toString(){
132    // testing code here
133  0 int size = mmer.size();
134  0 StringBuffer result = new StringBuffer();
135  0 for (int i = 0; i< size ; i++ ) {
136  0 RoleBasedCredentials tr = (RoleBasedCredentials ) mmer.get(i);
137  0 result.append( tr.getRoleType() + tr.getRoleValue() );
138    }
139   
140  0 return result.toString();
141    }
142   
143    }
144