public void transition ( Class < ? > clazz , String name , Transition trans ) throws PersistenceException { if ( ! isTransitionApplied ( clazz , name ) && noteTransition ( clazz , name ) ) { try { trans . run ( ) ; } catch ( PersistenceException e ) { try { clearTransition ( clazz , name ) ; } catch ( PersistenceException pe ) { log . warning ( "Failed to clear failed transition" , "class" , clazz , "name" , name , pe ) ; } throw e ; } catch ( RuntimeException rte ) { try { clearTransition ( clazz , name ) ; } catch ( PersistenceException pe ) { log . warning ( "Failed to clear failed transition" , "class" , clazz , "name" , name , pe ) ; } throw rte ; } } }
Perform a transition if it has not already been applied and record that it was applied .