Ray Milkey
Committed by Gerrit Code Review

AAA App refactoring

- optimized lookup of state machines
- modified getter/setter method names to match ONOS project standards
- made StateMachine local members private and add accesor methods
- added unit tests for StateMachine lookups

Change-Id: I5704ddc4d8b1b3c887be1262f2edd78965e4a8bf
...@@ -18,13 +18,16 @@ ...@@ -18,13 +18,16 @@
18 18
19 package org.onosproject.aaa; 19 package org.onosproject.aaa;
20 20
21 +import java.util.BitSet;
22 +import java.util.Map;
23 +
21 import org.onlab.packet.MacAddress; 24 import org.onlab.packet.MacAddress;
22 import org.onosproject.net.ConnectPoint; 25 import org.onosproject.net.ConnectPoint;
23 import org.onosproject.xosintegration.VoltTenant; 26 import org.onosproject.xosintegration.VoltTenant;
24 import org.onosproject.xosintegration.VoltTenantService; 27 import org.onosproject.xosintegration.VoltTenantService;
25 import org.slf4j.Logger; 28 import org.slf4j.Logger;
26 29
27 -import java.util.BitSet; 30 +import com.google.common.collect.Maps;
28 31
29 import static org.slf4j.LoggerFactory.getLogger; 32 import static org.slf4j.LoggerFactory.getLogger;
30 33
...@@ -58,9 +61,9 @@ class StateMachine { ...@@ -58,9 +61,9 @@ class StateMachine {
58 private byte[] requestAuthenticator; 61 private byte[] requestAuthenticator;
59 62
60 // Supplicant connectivity info 63 // Supplicant connectivity info
61 - protected ConnectPoint supplicantConnectpoint; 64 + private ConnectPoint supplicantConnectpoint;
62 - protected MacAddress supplicantAddress; 65 + private MacAddress supplicantAddress;
63 - protected short vlanId; 66 + private short vlanId;
64 67
65 private String sessionId = null; 68 private String sessionId = null;
66 69
...@@ -109,8 +112,28 @@ class StateMachine { ...@@ -109,8 +112,28 @@ class StateMachine {
109 112
110 private int currentState = STATE_IDLE; 113 private int currentState = STATE_IDLE;
111 114
115 + // Maps of state machines. Each state machine is represented by an
116 + // unique identifier on the switch: dpid + port number
117 + private static Map<String, StateMachine> sessionIdMap;
118 + private static Map<Integer, StateMachine> identifierMap;
112 119
113 - /** 120 + public static void initializeMaps() {
121 + sessionIdMap = Maps.newConcurrentMap();
122 + identifierMap = Maps.newConcurrentMap();
123 + }
124 +
125 + public static void destroyMaps() {
126 + sessionIdMap = null;
127 + identifierMap = null;
128 + }
129 +
130 + public static StateMachine lookupStateMachineById(byte identifier) {
131 + return identifierMap.get((int) identifier);
132 + }
133 +
134 + public static StateMachine lookupStateMachineBySessionId(String sessionId) {
135 + return sessionIdMap.get(sessionId);
136 + } /**
114 * State Machine Constructor. 137 * State Machine Constructor.
115 * 138 *
116 * @param sessionId session Id represented by the switch dpid + port number 139 * @param sessionId session Id represented by the switch dpid + port number
...@@ -120,15 +143,69 @@ class StateMachine { ...@@ -120,15 +143,69 @@ class StateMachine {
120 log.info("Creating a new state machine for {}", sessionId); 143 log.info("Creating a new state machine for {}", sessionId);
121 this.sessionId = sessionId; 144 this.sessionId = sessionId;
122 this.voltService = voltService; 145 this.voltService = voltService;
146 + sessionIdMap.put(sessionId, this);
147 + }
123 148
149 + /**
150 + * Gets the connect point for the supplicant side.
151 + *
152 + * @return supplicant connect point
153 + */
154 + public ConnectPoint supplicantConnectpoint() {
155 + return supplicantConnectpoint;
156 + }
157 +
158 + /**
159 + * Sets the supplicant side connect point.
160 + *
161 + * @param supplicantConnectpoint supplicant select point.
162 + */
163 + public void setSupplicantConnectpoint(ConnectPoint supplicantConnectpoint) {
164 + this.supplicantConnectpoint = supplicantConnectpoint;
124 } 165 }
125 166
126 /** 167 /**
127 - * Get the client id that is requesting for access. 168 + * Gets the MAC address of the supplicant.
169 + *
170 + * @return supplicant MAC address
171 + */
172 + public MacAddress supplicantAddress() {
173 + return supplicantAddress;
174 + }
175 +
176 + /**
177 + * Sets the supplicant MAC address.
178 + *
179 + * @param supplicantAddress new supplicant MAC address
180 + */
181 + public void setSupplicantAddress(MacAddress supplicantAddress) {
182 + this.supplicantAddress = supplicantAddress;
183 + }
184 +
185 + /**
186 + * Gets the client's Vlan ID.
187 + *
188 + * @return client vlan ID
189 + */
190 + public short vlanId() {
191 + return vlanId;
192 + }
193 +
194 + /**
195 + * Sets the client's vlan ID.
196 + *
197 + * @param vlanId new client vlan ID
198 + */
199 + public void setVlanId(short vlanId) {
200 + this.vlanId = vlanId;
201 + }
202 +
203 + /**
204 + * Gets the client id that is requesting for access.
128 * 205 *
129 * @return The client id. 206 * @return The client id.
130 */ 207 */
131 - public String getSessionId() { 208 + public String sessionId() {
132 return this.sessionId; 209 return this.sessionId;
133 } 210 }
134 211
...@@ -178,11 +255,11 @@ class StateMachine { ...@@ -178,11 +255,11 @@ class StateMachine {
178 } 255 }
179 256
180 /** 257 /**
181 - * Get the challenge EAP identifier set by the RADIUS. 258 + * Gets the challenge EAP identifier set by the RADIUS.
182 * 259 *
183 * @return The challenge EAP identifier. 260 * @return The challenge EAP identifier.
184 */ 261 */
185 - protected byte getChallengeIdentifier() { 262 + protected byte challengeIdentifier() {
186 return this.challengeIdentifier; 263 return this.challengeIdentifier;
187 } 264 }
188 265
...@@ -198,11 +275,11 @@ class StateMachine { ...@@ -198,11 +275,11 @@ class StateMachine {
198 } 275 }
199 276
200 /** 277 /**
201 - * Get the challenge state set by the RADIUS. 278 + * Gets the challenge state set by the RADIUS.
202 * 279 *
203 * @return The challenge state. 280 * @return The challenge state.
204 */ 281 */
205 - protected byte[] getChallengeState() { 282 + protected byte[] challengeState() {
206 return this.challengeState; 283 return this.challengeState;
207 } 284 }
208 285
...@@ -217,16 +294,16 @@ class StateMachine { ...@@ -217,16 +294,16 @@ class StateMachine {
217 294
218 295
219 /** 296 /**
220 - * Get the username. 297 + * Gets the username.
221 * 298 *
222 * @return The requestAuthenticator. 299 * @return The requestAuthenticator.
223 */ 300 */
224 - protected byte[] getReqeustAuthenticator() { 301 + protected byte[] requestAuthenticator() {
225 return this.requestAuthenticator; 302 return this.requestAuthenticator;
226 } 303 }
227 304
228 /** 305 /**
229 - * Set the username. 306 + * Sets the authenticator.
230 * 307 *
231 * @param authenticator The username sent to the RADIUS upon access request. 308 * @param authenticator The username sent to the RADIUS upon access request.
232 */ 309 */
...@@ -236,11 +313,11 @@ class StateMachine { ...@@ -236,11 +313,11 @@ class StateMachine {
236 313
237 314
238 /** 315 /**
239 - * Get the username. 316 + * Gets the username.
240 * 317 *
241 * @return The username. 318 * @return The username.
242 */ 319 */
243 - protected byte[] getUsername() { 320 + protected byte[] username() {
244 return this.username; 321 return this.username;
245 } 322 }
246 323
...@@ -249,7 +326,7 @@ class StateMachine { ...@@ -249,7 +326,7 @@ class StateMachine {
249 * 326 *
250 * @return The state machine identifier. 327 * @return The state machine identifier.
251 */ 328 */
252 - public byte getIdentifier() { 329 + public byte identifier() {
253 return (byte) this.identifier; 330 return (byte) this.identifier;
254 } 331 }
255 332
...@@ -284,6 +361,7 @@ class StateMachine { ...@@ -284,6 +361,7 @@ class StateMachine {
284 //move to the next state 361 //move to the next state
285 next(TRANSITION_START); 362 next(TRANSITION_START);
286 createIdentifier(); 363 createIdentifier();
364 + identifierMap.put(identifier, this);
287 } 365 }
288 366
289 /** 367 /**
...@@ -349,16 +427,16 @@ class StateMachine { ...@@ -349,16 +427,16 @@ class StateMachine {
349 } 427 }
350 428
351 /** 429 /**
352 - * Get the current state. 430 + * Gets the current state.
353 * 431 *
354 * @return The current state. Could be STATE_IDLE, STATE_STARTED, STATE_PENDING, STATE_AUTHORIZED, 432 * @return The current state. Could be STATE_IDLE, STATE_STARTED, STATE_PENDING, STATE_AUTHORIZED,
355 * STATE_UNAUTHORIZED. 433 * STATE_UNAUTHORIZED.
356 */ 434 */
357 - public int getState() { 435 + public int state() {
358 return currentState; 436 return currentState;
359 } 437 }
360 438
361 - 439 + @Override
362 public String toString() { 440 public String toString() {
363 return ("sessionId: " + this.sessionId) + "\t" + ("identifier: " + this.identifier) + "\t" + 441 return ("sessionId: " + this.sessionId) + "\t" + ("identifier: " + this.identifier) + "\t" +
364 ("state: " + this.currentState); 442 ("state: " + this.currentState);
......