##### Coverage Report - org.apache.turbine.om.security.SecurityObject

Classes in this File | Line Coverage | Branch Coverage | Complexity
SecurityObject |
40% | 11/27
0% | 0/2
| 1.1538461538461537;1,154

1 |  |
     package org.apache.turbine.om.security;
2 |  |
3 |  |
     /*
4 |  |
      * Licensed to the Apache Software Foundation (ASF) under one
5 |  |
      * or more contributor license agreements.  See the NOTICE file
6 |  |
      * distributed with this work for additional information
7 |  |
      * regarding copyright ownership.  The ASF licenses this file
8 |  |
      * to you under the Apache License, Version 2.0 (the
9 |  |
      * "License"); you may not use this file except in compliance
10 |  |
      * with the License.  You may obtain a copy of the License at
11 |  |
      *
12 |  |
      *   http://www.apache.org/licenses/LICENSE-2.0
13 |  |
      *
14 |  |
      * Unless required by applicable law or agreed to in writing,
15 |  |
      * software distributed under the License is distributed on an
16 |  |
      * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 |  |
      * KIND, either express or implied.  See the License for the
18 |  |
      * specific language governing permissions and limitations
19 |  |
      * under the License.
20 |  |
      */
21 |  |
22 |  |
     import java.util.Collections;
23 |  |
     import java.util.HashMap;
24 |  |
     import java.util.Map;
25 |  |
26 |  |
     /**
27 |  |
      * This class represents a generic object used in the Access Control Lists.
28 |  |
      *
29 |  |
      * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a>
30 |  |
      * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
31 |  |
      * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
32 |  |
      * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
33 |  |
      * @version $Id: SecurityObject.java 1071091 2011-02-15 22:06:55Z tv $
34 |  |
      */
35 | 0 |
     public abstract class SecurityObject<T extends SecurityEntity> implements Comparable<T>
36 |  |
     {
37 |  |
         /** The name of this object. */
38 |  |
         private String name;
39 |  |
40 |  |
         /** The id of this object */
41 |  |
         private int id;
42 |  |
43 |  |
         /** The attributes of this object. */
44 |  |
         private Map<String, Object> attributes;
45 |  |
46 |  |
         /**
47 |  |
          * Constructs a new SecurityObject
48 |  |
          */
49 |  |
         public SecurityObject()
50 |  |
         {
51 | 12 |
             this("");
52 | 12 |
         }
53 |  |
54 |  |
         /**
55 |  |
          * Constructs a new SecurityObject with the specified name.
56 |  |
          *
57 |  |
          * @param name The name of the new object.
58 |  |
          */
59 |  |
         public SecurityObject(String name)
60 | 12 |
         {
61 | 12 |
             setName(name);
62 | 12 |
             setId(0);
63 | 12 |
             setAttributes(Collections.synchronizedMap(new HashMap<String, Object>()));
64 | 12 |
         }
65 |  |
66 |  |
         /**
67 |  |
          * Returns a Map containing this object's attributes.
68 |  |
          *
69 |  |
          * @return the object's attributes.
70 |  |
          */
71 |  |
         public Map<String, Object> getAttributes()
72 |  |
         {
73 | 0 |
             return attributes;
74 |  |
         }
75 |  |
76 |  |
         /**
77 |  |
          * Replaces this object's attributes with the specified Map.
78 |  |
          *
79 |  |
          * @param attributes The new attributes of the object.
80 |  |
          */
81 |  |
         public void setAttributes(Map<String, Object> attributes)
82 |  |
         {
83 | 12 |
             this.attributes = attributes;
84 | 12 |
         }
85 |  |
86 |  |
         /**
87 |  |
          * Retrieves the value of specific attribute of this object.
88 |  |
          *
89 |  |
          * @param name the name of the attribute
90 |  |
          * @return the value of the attribute
91 |  |
          */
92 |  |
         public Object getAttribute(String name)
93 |  |
         {
94 | 0 |
             return attributes.get(name);
95 |  |
         }
96 |  |
97 |  |
         /**
98 |  |
          * Sets the value of specific attribute of this object.
99 |  |
          *
100 |  |
          * @param name the name of the attribute
101 |  |
          * @param value the value of the attribute
102 |  |
          */
103 |  |
         public void setAttribute(String name, Object value)
104 |  |
         {
105 | 0 |
             attributes.put(name, value);
106 | 0 |
         }
107 |  |
108 |  |
         /**
109 |  |
          * Returns the name of this object.
110 |  |
          *
111 |  |
          * @return The name of the object.
112 |  |
          */
113 |  |
         public String getName()
114 |  |
         {
115 | 0 |
             return name;
116 |  |
         }
117 |  |
118 |  |
         /**
119 |  |
          * Sets the name of this object.
120 |  |
          *
121 |  |
          * @param name The name of the object.
122 |  |
          */
123 |  |
         public void setName(String name)
124 |  |
         {
125 | 0 |
             this.name = name;
126 | 0 |
         }
127 |  |
128 |  |
         /**
129 |  |
          * Unused. There is an ID column in the
130 |  |
          * database scheme but it doesn't seem
131 |  |
          * to be used.
132 |  |
          *
133 |  |
          * @return 0
134 |  |
          */
135 |  |
         public int getId()
136 |  |
         {
137 | 0 |
             return id;
138 |  |
         }
139 |  |
140 |  |
         /**
141 |  |
          * Unused. There is an ID column in the
142 |  |
          * database scheme but it doesn't seem
143 |  |
          * to be used.
144 |  |
          *
145 |  |
          * @return null
146 |  |
          */
147 |  |
         public Integer getIdAsObj()
148 |  |
         {
149 | 0 |
             return new Integer(id);
150 |  |
         }
151 |  |
152 |  |
         /**
153 |  |
          * Unused. There is an ID column in the
154 |  |
          * database scheme but it doesn't seem
155 |  |
          * to be used.
156 |  |
          *
157 |  |
          * @param id The id of the User.
158 |  |
          */
159 |  |
         public void setId(int id)
160 |  |
         {
161 | 12 |
             this.id = id;
162 | 12 |
         }
163 |  |
164 |  |
         /**
165 |  |
          * Used for ordering SecurityObjects.
166 |  |
          *
167 |  |
          * @param obj The Object to compare to.
168 |  |
          * @return -1 if the name of the other object is lexically greater than this
169 |  |
          *         group, 1 if it is lexically lesser, 0 if they are equal.
170 |  |
          */
171 |  |
         public int compareTo(T obj)
172 |  |
         {
173 | 0 |
             if (this.getClass() != obj.getClass())
174 |  |
             {
175 | 0 |
                 throw new ClassCastException();
176 |  |
             }
177 |  |
178 | 0 |
             String name1 = obj.getName();
179 | 0 |
             String name2 = this.getName();
180 |  |
181 | 0 |
             return name2.compareTo(name1);
182 |  |
         }
183 |  |
184 |  |
         /**
185 |  |
          * Returns a textual representation of this object, consisted by
186 |  |
          * it's name and attributes.
187 |  |
          *
188 |  |
          * @return  a textual representation of this group.
189 |  |
          */
190 |  |
         public String toString()
191 |  |
         {
192 | 0 |
             return (getName() + ':' + getAttributes().toString());
193 |  |
         }
194 |  |
     }