Merge pull request #965 from Ali-RS/Ali-RS-patch-1

Added AppStateManager.getState(class, failOnMiss)
This commit is contained in:
Paul Speed 2018-12-04 02:18:29 -05:00 committed by GitHub
commit f44fdb35e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 1 deletions

View File

@ -210,6 +210,18 @@ public class AppStateManager {
* @return First attached state that is an instance of stateClass
*/
public <T extends AppState> T getState(Class<T> stateClass){
return getState(stateClass, false);
}
/**
* Returns the first state that is an instance of subclass of the specified class.
* @param <T>
* @param stateClass
* @param failOnMiss
* @return First attached state that is an instance of stateClass. If failOnMiss is true
* then an IllegalArgumentException is thrown if the state is not attached.
*/
public <T extends AppState> T getState(Class<T> stateClass, boolean failOnMiss){
synchronized (states){
AppState[] array = getStates();
for (AppState state : array) {
@ -229,6 +241,10 @@ public class AppStateManager {
}
}
}
if(failOnMiss) {
throw new IllegalArgumentException("State not found for:" + stateClass);
}
return null;
}

View File

@ -142,7 +142,11 @@ public abstract class BaseAppState implements AppState {
}
public final <T extends AppState> T getState( Class<T> type ) {
return getStateManager().getState(type);
return getState( type, false );
}
public final <T extends AppState> T getState( Class<T> type, boolean failOnMiss ) {
return getStateManager().getState( type, failOnMiss );
}
@Override