mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-22 21:01:00 +02:00
Refactoring of AAA app classes
- break up multi compilation unit class - improve exception handling - start on general clean up Change-Id: Ic0b4e19a25c2fc1d64c73bfc4273c82cbcaf5d45
This commit is contained in:
parent
d06f93f2ab
commit
c3fca7fa69
@ -137,7 +137,7 @@ class StateMachine {
|
|||||||
*/
|
*/
|
||||||
private void createIdentifier() throws StateMachineException {
|
private void createIdentifier() throws StateMachineException {
|
||||||
log.debug("Creating Identifier.");
|
log.debug("Creating Identifier.");
|
||||||
int index = -1;
|
int index;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//find the first available spot for identifier assignment
|
//find the first available spot for identifier assignment
|
||||||
@ -267,7 +267,7 @@ class StateMachine {
|
|||||||
/**
|
/**
|
||||||
* Move to the next state.
|
* Move to the next state.
|
||||||
*
|
*
|
||||||
* @param msg
|
* @param msg message
|
||||||
*/
|
*/
|
||||||
private void next(int msg) {
|
private void next(int msg) {
|
||||||
currentState = transition[currentState][msg];
|
currentState = transition[currentState][msg];
|
||||||
@ -280,14 +280,10 @@ class StateMachine {
|
|||||||
* @throws StateMachineException if authentication protocol is violated
|
* @throws StateMachineException if authentication protocol is violated
|
||||||
*/
|
*/
|
||||||
public void start() throws StateMachineException {
|
public void start() throws StateMachineException {
|
||||||
try {
|
states[currentState].start();
|
||||||
states[currentState].start();
|
//move to the next state
|
||||||
//move to the next state
|
next(TRANSITION_START);
|
||||||
next(TRANSITION_START);
|
createIdentifier();
|
||||||
createIdentifier();
|
|
||||||
} catch (StateMachineInvalidTransitionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -297,13 +293,9 @@ class StateMachine {
|
|||||||
* @throws StateMachineException if authentication protocol is violated
|
* @throws StateMachineException if authentication protocol is violated
|
||||||
*/
|
*/
|
||||||
public void requestAccess() throws StateMachineException {
|
public void requestAccess() throws StateMachineException {
|
||||||
try {
|
states[currentState].requestAccess();
|
||||||
states[currentState].requestAccess();
|
//move to the next state
|
||||||
//move to the next state
|
next(TRANSITION_REQUEST_ACCESS);
|
||||||
next(TRANSITION_REQUEST_ACCESS);
|
|
||||||
} catch (StateMachineInvalidTransitionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,27 +305,22 @@ class StateMachine {
|
|||||||
* @throws StateMachineException if authentication protocol is violated
|
* @throws StateMachineException if authentication protocol is violated
|
||||||
*/
|
*/
|
||||||
public void authorizeAccess() throws StateMachineException {
|
public void authorizeAccess() throws StateMachineException {
|
||||||
try {
|
states[currentState].radiusAccepted();
|
||||||
states[currentState].radiusAccepted();
|
//move to the next state
|
||||||
//move to the next state
|
next(TRANSITION_AUTHORIZE_ACCESS);
|
||||||
next(TRANSITION_AUTHORIZE_ACCESS);
|
|
||||||
|
|
||||||
if (voltService != null) {
|
if (voltService != null) {
|
||||||
voltService.addTenant(
|
voltService.addTenant(
|
||||||
VoltTenant.builder()
|
VoltTenant.builder()
|
||||||
.withHumanReadableName("VCPE-" + this.identifier)
|
.withHumanReadableName("VCPE-" + this.identifier)
|
||||||
.withId(this.identifier)
|
.withId(this.identifier)
|
||||||
.withProviderService(1)
|
.withProviderService(1)
|
||||||
.withServiceSpecificId(String.valueOf(this.identifier))
|
.withServiceSpecificId(String.valueOf(this.identifier))
|
||||||
.withPort(this.supplicantConnectpoint)
|
.withPort(this.supplicantConnectpoint)
|
||||||
.withVlanId(String.valueOf(this.vlanId)).build());
|
.withVlanId(String.valueOf(this.vlanId)).build());
|
||||||
}
|
|
||||||
|
|
||||||
deleteIdentifier();
|
|
||||||
} catch (StateMachineInvalidTransitionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deleteIdentifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -343,14 +330,10 @@ class StateMachine {
|
|||||||
* @throws StateMachineException if authentication protocol is violated
|
* @throws StateMachineException if authentication protocol is violated
|
||||||
*/
|
*/
|
||||||
public void denyAccess() throws StateMachineException {
|
public void denyAccess() throws StateMachineException {
|
||||||
try {
|
states[currentState].radiusDenied();
|
||||||
states[currentState].radiusDenied();
|
//move to the next state
|
||||||
//move to the next state
|
next(TRANSITION_DENY_ACCESS);
|
||||||
next(TRANSITION_DENY_ACCESS);
|
deleteIdentifier();
|
||||||
deleteIdentifier();
|
|
||||||
} catch (StateMachineInvalidTransitionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -360,13 +343,9 @@ class StateMachine {
|
|||||||
* @throws StateMachineException if authentication protocol is violated
|
* @throws StateMachineException if authentication protocol is violated
|
||||||
*/
|
*/
|
||||||
public void logoff() throws StateMachineException {
|
public void logoff() throws StateMachineException {
|
||||||
try {
|
states[currentState].logoff();
|
||||||
states[currentState].logoff();
|
//move to the next state
|
||||||
//move to the next state
|
next(TRANSITION_LOGOFF);
|
||||||
next(TRANSITION_LOGOFF);
|
|
||||||
} catch (StateMachineInvalidTransitionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -384,117 +363,97 @@ class StateMachine {
|
|||||||
return ("sessionId: " + this.sessionId) + "\t" + ("identifier: " + this.identifier) + "\t" +
|
return ("sessionId: " + this.sessionId) + "\t" + ("identifier: " + this.identifier) + "\t" +
|
||||||
("state: " + this.currentState);
|
("state: " + this.currentState);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
abstract class State {
|
||||||
// FIXME: A source file should contain no more than one top-level entity!
|
private final Logger log = getLogger(getClass());
|
||||||
|
|
||||||
abstract class State {
|
private String name = "State";
|
||||||
private final Logger log = getLogger(getClass());
|
|
||||||
|
public void start() throws StateMachineInvalidTransitionException {
|
||||||
private String name = "State";
|
log.warn("START transition from this state is not allowed.");
|
||||||
|
}
|
||||||
public void start() throws StateMachineInvalidTransitionException {
|
|
||||||
log.warn("START transition from this state is not allowed.");
|
public void requestAccess() throws StateMachineInvalidTransitionException {
|
||||||
}
|
log.warn("REQUEST ACCESS transition from this state is not allowed.");
|
||||||
|
}
|
||||||
public void requestAccess() throws StateMachineInvalidTransitionException {
|
|
||||||
log.warn("REQUEST ACCESS transition from this state is not allowed.");
|
public void radiusAccepted() throws StateMachineInvalidTransitionException {
|
||||||
}
|
log.warn("AUTHORIZE ACCESS transition from this state is not allowed.");
|
||||||
|
}
|
||||||
public void radiusAccepted() throws StateMachineInvalidTransitionException {
|
|
||||||
log.warn("AUTHORIZE ACCESS transition from this state is not allowed.");
|
public void radiusDenied() throws StateMachineInvalidTransitionException {
|
||||||
}
|
log.warn("DENY ACCESS transition from this state is not allowed.");
|
||||||
|
}
|
||||||
public void radiusDenied() throws StateMachineInvalidTransitionException {
|
|
||||||
log.warn("DENY ACCESS transition from this state is not allowed.");
|
public void logoff() throws StateMachineInvalidTransitionException {
|
||||||
}
|
log.warn("LOGOFF transition from this state is not allowed.");
|
||||||
|
}
|
||||||
public void logoff() throws StateMachineInvalidTransitionException {
|
}
|
||||||
log.warn("LOGOFF transition from this state is not allowed.");
|
|
||||||
}
|
/**
|
||||||
}
|
* Idle state: supplicant is logged of from the network.
|
||||||
|
*/
|
||||||
/**
|
class Idle extends State {
|
||||||
* Idle state: supplicant is logged of from the network.
|
private final Logger log = getLogger(getClass());
|
||||||
*/
|
private String name = "IDLE_STATE";
|
||||||
class Idle extends State {
|
|
||||||
private final Logger log = getLogger(getClass());
|
public void start() {
|
||||||
private String name = "IDLE_STATE";
|
log.info("Moving from IDLE state to STARTED state.");
|
||||||
|
}
|
||||||
public void start() {
|
}
|
||||||
log.info("Moving from IDLE state to STARTED state.");
|
|
||||||
}
|
/**
|
||||||
}
|
* Started state: supplicant has entered the network and informed the authenticator.
|
||||||
|
*/
|
||||||
/**
|
class Started extends State {
|
||||||
* Started state: supplicant has entered the network and informed the authenticator.
|
private final Logger log = getLogger(getClass());
|
||||||
*/
|
private String name = "STARTED_STATE";
|
||||||
class Started extends State {
|
|
||||||
private final Logger log = getLogger(getClass());
|
public void requestAccess() {
|
||||||
private String name = "STARTED_STATE";
|
log.info("Moving from STARTED state to PENDING state.");
|
||||||
|
}
|
||||||
public void requestAccess() {
|
}
|
||||||
log.info("Moving from STARTED state to PENDING state.");
|
|
||||||
}
|
/**
|
||||||
}
|
* Pending state: supplicant has been identified by the authenticator but has not access yet.
|
||||||
|
*/
|
||||||
/**
|
class Pending extends State {
|
||||||
* Pending state: supplicant has been identified by the authenticator but has not access yet.
|
private final Logger log = getLogger(getClass());
|
||||||
*/
|
private String name = "PENDING_STATE";
|
||||||
class Pending extends State {
|
|
||||||
private final Logger log = getLogger(getClass());
|
public void radiusAccepted() {
|
||||||
private String name = "PENDING_STATE";
|
log.info("Moving from PENDING state to AUTHORIZED state.");
|
||||||
|
}
|
||||||
public void radiusAccepted() {
|
|
||||||
log.info("Moving from PENDING state to AUTHORIZED state.");
|
public void radiusDenied() {
|
||||||
}
|
log.info("Moving from PENDING state to UNAUTHORIZED state.");
|
||||||
|
}
|
||||||
public void radiusDenied() {
|
}
|
||||||
log.info("Moving from PENDING state to UNAUTHORIZED state.");
|
|
||||||
}
|
/**
|
||||||
}
|
* Authorized state: supplicant port has been accepted, access is granted.
|
||||||
|
*/
|
||||||
/**
|
class Authorized extends State {
|
||||||
* Authorized state: supplicant port has been accepted, access is granted.
|
private final Logger log = getLogger(getClass());
|
||||||
*/
|
private String name = "AUTHORIZED_STATE";
|
||||||
class Authorized extends State {
|
|
||||||
private final Logger log = getLogger(getClass());
|
public void logoff() {
|
||||||
private String name = "AUTHORIZED_STATE";
|
|
||||||
|
log.info("Moving from AUTHORIZED state to IDLE state.");
|
||||||
public void logoff() {
|
}
|
||||||
|
}
|
||||||
log.info("Moving from AUTHORIZED state to IDLE state.");
|
|
||||||
}
|
/**
|
||||||
}
|
* Unauthorized state: supplicant port has been rejected, access is denied.
|
||||||
|
*/
|
||||||
/**
|
class Unauthorized extends State {
|
||||||
* Unauthorized state: supplicant port has been rejected, access is denied.
|
private final Logger log = getLogger(getClass());
|
||||||
*/
|
private String name = "UNAUTHORIZED_STATE";
|
||||||
class Unauthorized extends State {
|
|
||||||
private final Logger log = getLogger(getClass());
|
public void logoff() {
|
||||||
private String name = "UNAUTHORIZED_STATE";
|
log.info("Moving from UNAUTHORIZED state to IDLE state.");
|
||||||
|
}
|
||||||
public void logoff() {
|
}
|
||||||
log.info("Moving from UNAUTHORIZED state to IDLE state.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Exception for the State Machine.
|
|
||||||
*/
|
|
||||||
class StateMachineException extends Exception {
|
|
||||||
public StateMachineException(String message) {
|
|
||||||
super(message);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Exception raised when the transition from one state to another is invalid.
|
|
||||||
*/
|
|
||||||
class StateMachineInvalidTransitionException extends StateMachineException {
|
|
||||||
public StateMachineInvalidTransitionException(String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright 2015 AT&T Foundry
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.onosproject.aaa;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception for the State Machine.
|
||||||
|
*/
|
||||||
|
class StateMachineException extends Exception {
|
||||||
|
public StateMachineException(String message) {
|
||||||
|
super(message);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright 2015 AT&T Foundry
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.onosproject.aaa;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception raised when the transition from one state to another is invalid.
|
||||||
|
*/
|
||||||
|
class StateMachineInvalidTransitionException extends StateMachineException {
|
||||||
|
public StateMachineInvalidTransitionException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user