You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2017/10/07 05:38:03 UTC

[2/2] mina git commit: Formating and switch to Java 8

Formating and switch to Java 8

Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/87e4ac5f
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/87e4ac5f
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/87e4ac5f

Branch: refs/heads/2.0
Commit: 87e4ac5f187d33a3ac3bcf1da414140c32f24e1d
Parents: e41a767
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sat Oct 7 07:37:59 2017 +0200
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sat Oct 7 07:37:59 2017 +0200

----------------------------------------------------------------------
 .../statemachine/BreakAndCallException.java     |   1 +
 .../statemachine/BreakAndGotoException.java     |   1 +
 .../org/apache/mina/statemachine/State.java     |  16 +--
 .../apache/mina/statemachine/StateControl.java  |   3 -
 .../apache/mina/statemachine/StateMachine.java  | 100 +++++++++++--------
 .../mina/statemachine/StateMachineFactory.java  |  54 +++++++---
 .../statemachine/StateMachineProxyBuilder.java  |   6 +-
 .../annotation/IoFilterTransition.java          |   2 -
 .../annotation/IoFilterTransitions.java         |   3 -
 .../annotation/IoHandlerTransition.java         |   2 -
 .../annotation/IoHandlerTransitions.java        |   3 -
 .../statemachine/annotation/Transition.java     |   1 -
 .../context/AbstractStateContext.java           |  22 +++-
 .../mina/statemachine/context/StateContext.java |   1 -
 .../statemachine/event/DefaultEventFactory.java |   6 +-
 .../apache/mina/statemachine/event/Event.java   |   4 +
 .../event/EventArgumentsInterceptor.java        |   3 -
 .../mina/statemachine/event/EventFactory.java   |  10 +-
 .../mina/statemachine/event/IoFilterEvents.java |   6 +-
 .../statemachine/event/IoHandlerEvents.java     |   8 +-
 .../transition/AbstractTransition.java          |   7 +-
 .../transition/AmbiguousMethodException.java    |   1 -
 .../transition/MethodSelfTransition.java        |  23 +++--
 .../transition/MethodTransition.java            |  25 ++++-
 .../transition/NoSuchMethodException.java       |   1 -
 .../statemachine/transition/NoopTransition.java |   4 +
 .../statemachine/transition/Transition.java     |   1 -
 27 files changed, 199 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndCallException.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndCallException.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndCallException.java
index 2ac8acd..a3cf34c 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndCallException.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndCallException.java
@@ -41,6 +41,7 @@ class BreakAndCallException extends BreakException {
         if (stateId == null) {
             throw new IllegalArgumentException("stateId");
         }
+        
         this.stateId = stateId;
         this.returnToStateId = returnToStateId;
         this.now = now;

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndGotoException.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndGotoException.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndGotoException.java
index c85b849..12b10a5 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndGotoException.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/BreakAndGotoException.java
@@ -35,6 +35,7 @@ class BreakAndGotoException extends BreakException {
         if (stateId == null) {
             throw new IllegalArgumentException("stateId");
         }
+        
         this.stateId = stateId;
         this.now = now;
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
index 6cb9f40..3844f5b 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
@@ -23,7 +23,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.mina.statemachine.event.Event;
 import org.apache.mina.statemachine.transition.SelfTransition;
 import org.apache.mina.statemachine.transition.Transition;
 
@@ -48,18 +47,19 @@ public class State {
     /** The state ID */
     private final String id;
 
-    /** The paret state */
+    /** The parent state */
     private final State parent;
 
-    private List<TransitionHolder> transitionHolders = new ArrayList<TransitionHolder>();
+    private List<TransitionHolder> transitionHolders = new ArrayList<>();
 
     /** The list of transitions for this state */
     private List<Transition> transitions = Collections.emptyList();
 
-    /** The list of transitions that */
-    private List<SelfTransition> onEntries = new ArrayList<SelfTransition>();
+    /** The list of entry transitions on a state */
+    private List<SelfTransition> onEntries = new ArrayList<>();
 
-    private List<SelfTransition> onExits = new ArrayList<SelfTransition>();
+    /** The list of exit transition from a state */
+    private List<SelfTransition> onExits = new ArrayList<>();
 
     /**
      * Creates a new {@link State} with the specified id.
@@ -151,7 +151,8 @@ public class State {
     }
 
     private void updateTransitions() {
-        transitions = new ArrayList<Transition>(transitionHolders.size());
+        transitions = new ArrayList<>(transitionHolders.size());
+        
         for (TransitionHolder holder : transitionHolders) {
             transitions.add(holder.transition);
         }
@@ -240,6 +241,7 @@ public class State {
             this.weight = weight;
         }
 
+        @Override
         public int compareTo(TransitionHolder o) {
             return (weight > o.weight) ? 1 : (weight < o.weight ? -1 : 0);
         }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateControl.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateControl.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateControl.java
index ea61eb1..6e0a1a3 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateControl.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateControl.java
@@ -19,9 +19,6 @@
  */
 package org.apache.mina.statemachine;
 
-import org.apache.mina.statemachine.event.Event;
-import org.apache.mina.statemachine.transition.Transition;
-
 /**
  * Allows for programmatic control of a state machines execution.
  * <p>

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachine.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachine.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachine.java
index dfc031c..e4fd0ec 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachine.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachine.java
@@ -21,11 +21,12 @@ package org.apache.mina.statemachine;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Deque;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Stack;
+import java.util.concurrent.ConcurrentLinkedDeque;
 
 import org.apache.mina.statemachine.context.StateContext;
 import org.apache.mina.statemachine.event.Event;
@@ -55,14 +56,16 @@ public class StateMachine {
     private final Map<String, State> states;
 
     private final ThreadLocal<Boolean> processingThreadLocal = new ThreadLocal<Boolean>() {
+        @Override
         protected Boolean initialValue() {
             return Boolean.FALSE;
         }
     };
 
     private final ThreadLocal<LinkedList<Event>> eventQueueThreadLocal = new ThreadLocal<LinkedList<Event>>() {
+        @Override
         protected LinkedList<Event> initialValue() {
-            return new LinkedList<Event>();
+            return new LinkedList<>();
         }
     };
 
@@ -74,10 +77,12 @@ public class StateMachine {
      * @param startStateId the id of the start {@link State}.
      */
     public StateMachine(State[] states, String startStateId) {
-        this.states = new HashMap<String, State>();
+        this.states = new HashMap<>();
+        
         for (State s : states) {
             this.states.put(s.getId(), s);
         }
+        
         this.startState = getState(startStateId);
     }
 
@@ -99,11 +104,13 @@ public class StateMachine {
      * @return the {@link State}
      * @throws NoSuchStateException if no matching {@link State} could be found.
      */
-    public State getState(String id) throws NoSuchStateException {
+    public State getState(String id) {
         State state = states.get(id);
+        
         if (state == null) {
             throw new NoSuchStateException(id);
         }
+        
         return state;
     }
 
@@ -138,21 +145,22 @@ public class StateMachine {
                  * event.
                  */
                 if (LOGGER.isDebugEnabled()) {
-                    LOGGER.debug("State machine called recursively. Queuing event " + event + " for later processing.");
+                    LOGGER.debug("State machine called recursively. Queuing event {} for later processing.", event);
                 }
             } else {
                 processingThreadLocal.set(true);
+                
                 try {
                     if (context.getCurrentState() == null) {
                         context.setCurrentState(startState);
                     }
+                    
                     processEvents(eventQueue);
                 } finally {
                     processingThreadLocal.set(false);
                 }
             }
         }
-
     }
 
     private void processEvents(LinkedList<Event> eventQueue) {
@@ -168,82 +176,91 @@ public class StateMachine {
 
         for (Transition t : state.getTransitions()) {
             if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug("Trying transition " + t);
+                LOGGER.debug("Trying transition {}", t);
             }
 
             try {
                 if (t.execute(event)) {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("Transition " + t + " executed successfully.");
+                        LOGGER.debug("Transition {} executed successfully.", t);
                     }
+                    
                     setCurrentState(context, t.getNextState());
 
                     return;
                 }
             } catch (BreakAndContinueException bace) {
                 if (LOGGER.isDebugEnabled()) {
-                    LOGGER.debug("BreakAndContinueException thrown in " + "transition " + t
-                            + ". Continuing with next transition.");
+                    LOGGER.debug("BreakAndContinueException thrown in transition {}. Continuing with next transition.", t);
                 }
             } catch (BreakAndGotoException bage) {
                 State newState = getState(bage.getStateId());
 
                 if (bage.isNow()) {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("BreakAndGotoException thrown in " + "transition " + t + ". Moving to state "
-                                + newState.getId() + " now.");
+                        LOGGER.debug("BreakAndGotoException thrown in transition {}. Moving to state {} now", t,
+                            newState.getId());
                     }
+                    
                     setCurrentState(context, newState);
                     handle(newState, event);
                 } else {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("BreakAndGotoException thrown in " + "transition " + t + ". Moving to state "
-                                + newState.getId() + " next.");
+                        LOGGER.debug("BreakAndGotoException thrown in transition {}. Moving to state {} next.",
+                                t, newState.getId());
                     }
+                    
                     setCurrentState(context, newState);
                 }
+                
                 return;
             } catch (BreakAndCallException bace) {
                 State newState = getState(bace.getStateId());
 
-                Stack<State> callStack = getCallStack(context);
+                Deque<State> callStack = getCallStack(context);
                 State returnTo = bace.getReturnToStateId() != null ? getState(bace.getReturnToStateId()) : context
                         .getCurrentState();
                 callStack.push(returnTo);
 
                 if (bace.isNow()) {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("BreakAndCallException thrown in " + "transition " + t + ". Moving to state "
-                                + newState.getId() + " now.");
+                        LOGGER.debug("BreakAndCallException thrown in transition {}. Moving to state {} now.",
+                                t, newState.getId());
                     }
+                    
                     setCurrentState(context, newState);
                     handle(newState, event);
                 } else {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("BreakAndCallException thrown in " + "transition " + t + ". Moving to state "
-                                + newState.getId() + " next.");
+                        LOGGER.debug("BreakAndCallException thrown in transition {}. Moving to state {} next.",
+                                t, newState.getId());
                     }
+                    
                     setCurrentState(context, newState);
                 }
+                
                 return;
             } catch (BreakAndReturnException bare) {
-                Stack<State> callStack = getCallStack(context);
+                Deque<State> callStack = getCallStack(context);
                 State newState = callStack.pop();
 
                 if (bare.isNow()) {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("BreakAndReturnException thrown in " + "transition " + t + ". Moving to state "
-                                + newState.getId() + " now.");
+                        LOGGER.debug("BreakAndReturnException thrown in transition {}. Moving to state {} now.",
+                                t, newState.getId());
                     }
+                    
                     setCurrentState(context, newState);
                     handle(newState, event);
                 } else {
                     if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("BreakAndReturnException thrown in " + "transition " + t + ". Moving to state "
-                                + newState.getId() + " next.");
+                        LOGGER.debug("BreakAndReturnException thrown in transition {}. Moving to state {} next.",
+                                t, newState.getId());
                     }
+                    
                     setCurrentState(context, newState);
                 }
+                
                 return;
             }
         }
@@ -252,7 +269,6 @@ public class StateMachine {
          * No transition could handle the event. Try with the parent state if
          * there is one.
          */
-
         if (state.getParent() != null) {
             handle(state.getParent(), event);
         } else {
@@ -260,13 +276,15 @@ public class StateMachine {
         }
     }
 
-    private Stack<State> getCallStack(StateContext context) {
+    private Deque<State> getCallStack(StateContext context) {
         @SuppressWarnings("unchecked")
-        Stack<State> callStack = (Stack<State>) context.getAttribute(CALL_STACK);
+        Deque<State> callStack = (Deque<State>) context.getAttribute(CALL_STACK);
+        
         if (callStack == null) {
-            callStack = new Stack<State>();
+            callStack = new ConcurrentLinkedDeque<>();
             context.setAttribute(CALL_STACK, callStack);
         }
+        
         return callStack;
     }
 
@@ -274,10 +292,11 @@ public class StateMachine {
         if (newState != null) {
             if (LOGGER.isDebugEnabled()) {
                 if (newState != context.getCurrentState()) {
-                    LOGGER.debug("Leaving state " + context.getCurrentState().getId());
-                    LOGGER.debug("Entering state " + newState.getId());
+                    LOGGER.debug("Leaving state {}", context.getCurrentState().getId());
+                    LOGGER.debug("Entering state {}", newState.getId());
                 }
             }
+            
             executeOnExits(context, context.getCurrentState());
             executeOnEntries(context, newState);
             context.setCurrentState(newState);
@@ -288,16 +307,19 @@ public class StateMachine {
         List<SelfTransition> onExits = state.getOnExitSelfTransitions();
         boolean isExecuted = false;
 
-        if (onExits != null)
+        if (onExits != null) {
             for (SelfTransition selfTransition : onExits) {
                 selfTransition.execute(context, state);
+                
                 if (LOGGER.isDebugEnabled()) {
                     isExecuted = true;
-                    LOGGER.debug("Executing onEntry action for " + state.getId());
+                    LOGGER.debug("Executing onEntry action for {}", state.getId());
                 }
             }
+        }
+        
         if (LOGGER.isDebugEnabled() && !isExecuted) {
-            LOGGER.debug("No onEntry action for " + state.getId());
+            LOGGER.debug("No onEntry action for {}", state.getId());
 
         }
     }
@@ -306,19 +328,19 @@ public class StateMachine {
         List<SelfTransition> onEntries = state.getOnEntrySelfTransitions();
         boolean isExecuted = false;
 
-        if (onEntries != null)
+        if (onEntries != null) {
             for (SelfTransition selfTransition : onEntries) {
                 selfTransition.execute(context, state);
+                
                 if (LOGGER.isDebugEnabled()) {
                     isExecuted = true;
-                    LOGGER.debug("Executing onExit action for " + state.getId());
+                    LOGGER.debug("Executing onExit action for {}", state.getId());
                 }
             }
+        }
+        
         if (LOGGER.isDebugEnabled() && !isExecuted) {
-            LOGGER.debug("No onEntry action for " + state.getId());
-
+            LOGGER.debug("No onEntry action for {}", state.getId());
         }
-
     }
-
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineFactory.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineFactory.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineFactory.java
index b5f5e58..611ffbf 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineFactory.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineFactory.java
@@ -36,11 +36,9 @@ import org.apache.mina.statemachine.annotation.OnEntry;
 import org.apache.mina.statemachine.annotation.OnExit;
 import org.apache.mina.statemachine.annotation.Transition;
 import org.apache.mina.statemachine.annotation.TransitionAnnotation;
-import org.apache.mina.statemachine.annotation.Transitions;
 import org.apache.mina.statemachine.event.Event;
 import org.apache.mina.statemachine.transition.MethodSelfTransition;
 import org.apache.mina.statemachine.transition.MethodTransition;
-import org.apache.mina.statemachine.transition.SelfTransition;
 
 /**
  * Creates {@link StateMachine}s by reading {@link org.apache.mina.statemachine.annotation.State},
@@ -79,10 +77,12 @@ public class StateMachineFactory {
      */
     public static StateMachineFactory getInstance(Class<? extends Annotation> transitionAnnotation) {
         TransitionAnnotation a = transitionAnnotation.getAnnotation(TransitionAnnotation.class);
+        
         if (a == null) {
             throw new IllegalArgumentException("The annotation class " + transitionAnnotation
                     + " has not been annotated with the " + TransitionAnnotation.class.getName() + " annotation");
         }
+        
         return new StateMachineFactory(transitionAnnotation, a.value(), OnEntry.class, OnExit.class);
 
     }
@@ -139,12 +139,12 @@ public class StateMachineFactory {
      */
     public StateMachine create(String start, Object handler, Object... handlers) {
 
-        Map<String, State> states = new HashMap<String, State>();
-        List<Object> handlersList = new ArrayList<Object>(1 + handlers.length);
+        Map<String, State> states = new HashMap<>();
+        List<Object> handlersList = new ArrayList<>(1 + handlers.length);
         handlersList.add(handler);
         handlersList.addAll(Arrays.asList(handlers));
 
-        LinkedList<Field> fields = new LinkedList<Field>();
+        LinkedList<Field> fields = new LinkedList<>();
         for (Object h : handlersList) {
             fields.addAll(getFields(h instanceof Class ? (Class<?>) h : h.getClass()));
         }
@@ -177,24 +177,28 @@ public class StateMachineFactory {
         if (m.isAnnotationPresent(OnEntry.class)) {
             OnEntry onEntryAnnotation = (OnEntry) m.getAnnotation(onEntrySelfTransitionAnnotation);
             State state = states.get(onEntryAnnotation.value());
+            
             if (state == null) {
                 throw new StateMachineCreationException("Error encountered "
                         + "when processing onEntry annotation in method " + m + ". state " + onEntryAnnotation.value()
                         + " not Found.");
 
             }
+            
             state.addOnEntrySelfTransaction(new MethodSelfTransition(m, handler));
         }
 
         if (m.isAnnotationPresent(OnExit.class)) {
             OnExit onExitAnnotation = (OnExit) m.getAnnotation(onExitSelfTransitionAnnotation);
             State state = states.get(onExitAnnotation.value());
+            
             if (state == null) {
                 throw new StateMachineCreationException("Error encountered "
                         + "when processing onExit annotation in method " + m + ". state " + onExitAnnotation.value()
                         + " not Found.");
 
             }
+            
             state.addOnExitSelfTransaction(new MethodSelfTransition(m, handler));
         }
 
@@ -207,6 +211,7 @@ public class StateMachineFactory {
 
         Method[] methods = handler.getClass().getDeclaredMethods();
         Arrays.sort(methods, new Comparator<Method>() {
+            @Override
             public int compare(Method m1, Method m2) {
                 return m1.toString().compareTo(m2.toString());
             }
@@ -215,11 +220,13 @@ public class StateMachineFactory {
         for (Method m : methods) {
             setupSelfTransitions(m, onEntrySelfTransitionAnnotation, onExitSelfTransitionAnnotation, states, handler);
 
-            List<TransitionWrapper> transitionAnnotations = new ArrayList<TransitionWrapper>();
+            List<TransitionWrapper> transitionAnnotations = new ArrayList<>();
+            
             if (m.isAnnotationPresent(transitionAnnotation)) {
                 transitionAnnotations.add(new TransitionWrapper(transitionAnnotation, m
                         .getAnnotation(transitionAnnotation)));
             }
+            
             if (m.isAnnotationPresent(transitionsAnnotation)) {
                 transitionAnnotations.addAll(Arrays.asList(new TransitionsWrapper(transitionAnnotation,
                         transitionsAnnotation, m.getAnnotation(transitionsAnnotation)).value()));
@@ -231,20 +238,24 @@ public class StateMachineFactory {
 
             for (TransitionWrapper annotation : transitionAnnotations) {
                 Object[] eventIds = annotation.on();
+                
                 if (eventIds.length == 0) {
-                    throw new StateMachineCreationException("Error encountered " + "when processing method " + m
+                    throw new StateMachineCreationException("Error encountered when processing method " + m
                             + ". No event ids specified.");
                 }
+                
                 if (annotation.in().length == 0) {
-                    throw new StateMachineCreationException("Error encountered " + "when processing method " + m
+                    throw new StateMachineCreationException("Error encountered when processing method " + m
                             + ". No states specified.");
                 }
 
                 State next = null;
+                
                 if (!annotation.next().equals(Transition.SELF)) {
                     next = states.get(annotation.next());
+                    
                     if (next == null) {
-                        throw new StateMachineCreationException("Error encountered " + "when processing method " + m
+                        throw new StateMachineCreationException("Error encountered when processing method " + m
                                 + ". Unknown next state: " + annotation.next() + ".");
                     }
                 }
@@ -253,13 +264,16 @@ public class StateMachineFactory {
                     if (event == null) {
                         event = Event.WILDCARD_EVENT_ID;
                     }
+                    
                     if (!(event instanceof String)) {
                         event = event.toString();
                     }
+                    
                     for (String in : annotation.in()) {
                         State state = states.get(in);
+                        
                         if (state == null) {
-                            throw new StateMachineCreationException("Error encountered " + "when processing method "
+                            throw new StateMachineCreationException("Error encountered when processing method "
                                     + m + ". Unknown state: " + in + ".");
                         }
 
@@ -271,7 +285,7 @@ public class StateMachineFactory {
     }
 
     static List<Field> getFields(Class<?> clazz) {
-        LinkedList<Field> fields = new LinkedList<Field>();
+        LinkedList<Field> fields = new LinkedList<>();
 
         for (Field f : clazz.getDeclaredFields()) {
             if (!f.isAnnotationPresent(org.apache.mina.statemachine.annotation.State.class)) {
@@ -280,8 +294,8 @@ public class StateMachineFactory {
 
             if ((f.getModifiers() & Modifier.STATIC) == 0 || (f.getModifiers() & Modifier.FINAL) == 0
                     || !f.getType().equals(String.class)) {
-                throw new StateMachineCreationException("Error encountered when " + "processing field " + f
-                        + ". Only static final " + "String fields can be used with the @State " + "annotation.");
+                throw new StateMachineCreationException("Error encountered when processing field " + f
+                        + ". Only static final String fields can be used with the @State annotation.");
             }
 
             if (!f.isAccessible()) {
@@ -295,24 +309,27 @@ public class StateMachineFactory {
     }
 
     static State[] createStates(List<Field> fields) {
-        LinkedHashMap<String, State> states = new LinkedHashMap<String, State>();
+        LinkedHashMap<String, State> states = new LinkedHashMap<>();
 
         while (!fields.isEmpty()) {
             int size = fields.size();
             int numStates = states.size();
+            
             for (int i = 0; i < size; i++) {
                 Field f = fields.remove(0);
 
                 String value = null;
+                
                 try {
                     value = (String) f.get(null);
                 } catch (IllegalAccessException iae) {
-                    throw new StateMachineCreationException("Error encountered when " + "processing field " + f + ".",
+                    throw new StateMachineCreationException("Error encountered when processing field " + f + ".",
                             iae);
                 }
 
                 org.apache.mina.statemachine.annotation.State stateAnnotation = f
                         .getAnnotation(org.apache.mina.statemachine.annotation.State.class);
+                
                 if (stateAnnotation.value().equals(org.apache.mina.statemachine.annotation.State.ROOT)) {
                     states.put(value, new State(value));
                 } else if (states.containsKey(stateAnnotation.value())) {
@@ -330,7 +347,7 @@ public class StateMachineFactory {
              */
             if (states.size() == numStates) {
                 throw new StateMachineCreationException("Error encountered while creating "
-                        + "FSM. The following fields specify non-existing " + "parent states: " + fields);
+                        + "FSM. The following fields specify non-existing parent states: " + fields);
             }
         }
 
@@ -367,6 +384,7 @@ public class StateMachineFactory {
         private <T> T getParameter(String name, Class<T> returnType) {
             try {
                 Method m = transitionClazz.getMethod(name);
+                
                 if (!returnType.isAssignableFrom(m.getReturnType())) {
                     throw new NoSuchMethodException();
                 }
@@ -395,9 +413,11 @@ public class StateMachineFactory {
         TransitionWrapper[] value() {
             Annotation[] annos = getParameter("value", Annotation[].class);
             TransitionWrapper[] wrappers = new TransitionWrapper[annos.length];
+            
             for (int i = 0; i < annos.length; i++) {
                 wrappers[i] = new TransitionWrapper(transitionClazz, annos[i]);
             }
+            
             return wrappers;
         }
 
@@ -405,9 +425,11 @@ public class StateMachineFactory {
         private <T> T getParameter(String name, Class<T> returnType) {
             try {
                 Method m = transitionsclazz.getMethod(name);
+                
                 if (!returnType.isAssignableFrom(m.getReturnType())) {
                     throw new NoSuchMethodException();
                 }
+                
                 return (T) m.invoke(annotation);
             } catch (Exception e) {
                 throw new StateMachineCreationException("Could not get parameter '" + name

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineProxyBuilder.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineProxyBuilder.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineProxyBuilder.java
index 267ec31..d0e1272 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineProxyBuilder.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/StateMachineProxyBuilder.java
@@ -225,9 +225,11 @@ public class StateMachineProxyBuilder {
             if ("hashCode".equals(method.getName()) && args == null) {
                 return Integer.valueOf(System.identityHashCode(proxy));
             }
+            
             if ("equals".equals(method.getName()) && args.length == 1) {
                 return Boolean.valueOf(proxy == args[0]);
             }
+            
             if ("toString".equals(method.getName()) && args == null) {
                 return (name != null ? name : proxy.getClass().getName()) + "@"
                         + Integer.toHexString(System.identityHashCode(proxy));
@@ -238,6 +240,7 @@ public class StateMachineProxyBuilder {
             }
 
             args = args == null ? EMPTY_ARGUMENTS : args;
+            
             if (interceptor != null) {
                 args = interceptor.modify(args);
             }
@@ -248,7 +251,8 @@ public class StateMachineProxyBuilder {
                 if (ignoreStateContextLookupFailure) {
                     return null;
                 }
-                throw new IllegalStateException("Cannot determine state " + "context for method invocation: " + method);
+                
+                throw new IllegalStateException("Cannot determine state context for method invocation: " + method);
             }
 
             Event event = eventFactory.create(context, method, args);

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransition.java
index a9eb85d..d2907d5 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransition.java
@@ -24,8 +24,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.statemachine.StateMachine;
 import org.apache.mina.statemachine.event.IoFilterEvents;
 
 /**

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransitions.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransitions.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransitions.java
index 17e4439..bba8e82 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransitions.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoFilterTransitions.java
@@ -24,9 +24,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.statemachine.StateMachine;
-
 /**
  * Annotation used to annotate a method with several {@link IoFilterTransition}s.
  * This should be used when creating {@link StateMachine}s for MINA's 

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransition.java
index e502bf0..c1ffd21 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransition.java
@@ -24,8 +24,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.mina.core.service.IoHandler;
-import org.apache.mina.statemachine.StateMachine;
 import org.apache.mina.statemachine.event.IoHandlerEvents;
 
 /**

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransitions.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransitions.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransitions.java
index b2c0806..bed4f51 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransitions.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/IoHandlerTransitions.java
@@ -24,9 +24,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.mina.core.service.IoHandler;
-import org.apache.mina.statemachine.StateMachine;
-
 /**
  * Annotation used to annotate a method with several {@link IoHandlerTransition}s.
  * This should be used when creating {@link StateMachine}s for MINA's 

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/Transition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/Transition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/Transition.java
index 8ccd6f3..f23d76d 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/Transition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/annotation/Transition.java
@@ -24,7 +24,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.mina.statemachine.StateMachine;
 import org.apache.mina.statemachine.event.Event;
 
 /**

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/AbstractStateContext.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/AbstractStateContext.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/AbstractStateContext.java
index 39c0ff4..9c7debe 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/AbstractStateContext.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/AbstractStateContext.java
@@ -35,29 +35,49 @@ public abstract class AbstractStateContext implements StateContext {
 
     private Map<Object, Object> attributes = null;
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public Object getAttribute(Object key) {
         return getAttributes().get(key);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public State getCurrentState() {
         return currentState;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public void setAttribute(Object key, Object value) {
         getAttributes().put(key, value);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public void setCurrentState(State state) {
         currentState = state;
     }
 
     protected Map<Object, Object> getAttributes() {
         if (attributes == null) {
-            attributes = new HashMap<Object, Object>();
+            attributes = new HashMap<>();
         }
         return attributes;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/StateContext.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/StateContext.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/StateContext.java
index 49fa0dd..483c5bd 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/StateContext.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/context/StateContext.java
@@ -20,7 +20,6 @@
 package org.apache.mina.statemachine.context;
 
 import org.apache.mina.statemachine.State;
-import org.apache.mina.statemachine.StateMachine;
 
 /**
  * {@link StateContext} objects are used to store the current {@link State} and

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/DefaultEventFactory.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/DefaultEventFactory.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/DefaultEventFactory.java
index d613ead..b7cd812 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/DefaultEventFactory.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/DefaultEventFactory.java
@@ -30,9 +30,11 @@ import org.apache.mina.statemachine.context.StateContext;
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
 public class DefaultEventFactory implements EventFactory {
-
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public Event create(StateContext context, Method method, Object[] arguments) {
         return new Event(method.getName(), context, arguments);
     }
-
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/Event.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/Event.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/Event.java
index fad0475..b88eab7 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/Event.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/Event.java
@@ -59,12 +59,15 @@ public class Event {
         if (id == null) {
             throw new IllegalArgumentException("id");
         }
+        
         if (context == null) {
             throw new IllegalArgumentException("context");
         }
+        
         if (arguments == null) {
             throw new IllegalArgumentException("arguments");
         }
+        
         this.id = id;
         this.context = context;
         this.arguments = arguments;
@@ -92,6 +95,7 @@ public class Event {
         return arguments;
     }
 
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventArgumentsInterceptor.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventArgumentsInterceptor.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventArgumentsInterceptor.java
index b4da846..2b8ea9a 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventArgumentsInterceptor.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventArgumentsInterceptor.java
@@ -19,8 +19,6 @@
  */
 package org.apache.mina.statemachine.event;
 
-import org.apache.mina.statemachine.StateMachine;
-
 /**
  * Intercepts the {@link Event} arguments before the {@link Event} is passed
  * to the {@link StateMachine} and allows for the arguments to be modified.
@@ -38,5 +36,4 @@ public interface EventArgumentsInterceptor {
      *         modification is needed.
      */
     Object[] modify(Object[] arguments);
-
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventFactory.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventFactory.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventFactory.java
index 52689c9..30994b5 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventFactory.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/EventFactory.java
@@ -21,7 +21,6 @@ package org.apache.mina.statemachine.event;
 
 import java.lang.reflect.Method;
 
-import org.apache.mina.statemachine.StateMachineProxyBuilder;
 import org.apache.mina.statemachine.context.StateContext;
 
 /**
@@ -35,12 +34,9 @@ public interface EventFactory {
      * Creates a new {@link Event} from the specified method and method
      * arguments.
      * 
-     * @param context
-     *            the current {@link StateContext}.
-     * @param method
-     *            the method being invoked.
-     * @param arguments
-     *            the method arguments.
+     * @param context the current {@link StateContext}.
+     * @param method the method being invoked.
+     * @param arguments the method arguments.
      * @return the {@link Event} object.
      */
     Event create(StateContext context, Method method, Object[] arguments);

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoFilterEvents.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoFilterEvents.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoFilterEvents.java
index dc2076f..65faa52 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoFilterEvents.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoFilterEvents.java
@@ -19,9 +19,6 @@
  */
 package org.apache.mina.statemachine.event;
 
-import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.statemachine.annotation.IoFilterTransition;
-
 /**
  * Defines all possible MINA {@link IoFilter} events for use in {@link IoFilterTransition}
  * annotations.
@@ -59,6 +56,9 @@ public enum IoFilterEvents {
     /** The Write event */ 
     WRITE("filterWrite"), 
     
+    /** The InputClosed event */
+    INPUT_CLOSED("inputClosed"),
+    
     /** The Set Traffic Mask event */ 
     SET_TRAFFIC_MASK("filterSetTrafficMask");
 

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoHandlerEvents.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoHandlerEvents.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoHandlerEvents.java
index 34f9e32..54ec50f 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoHandlerEvents.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/event/IoHandlerEvents.java
@@ -19,9 +19,6 @@
  */
 package org.apache.mina.statemachine.event;
 
-import org.apache.mina.core.service.IoHandler;
-import org.apache.mina.statemachine.annotation.IoHandlerTransition;
-
 /**
  * Defines all possible MINA {@link IoHandler} events for use in {@link IoHandlerTransition}
  * annotations.
@@ -44,12 +41,15 @@ public enum IoHandlerEvents {
     /** The Session Idle event */
     SESSION_IDLE("sessionIdle"), 
     
-    /** The Message Recived event */
+    /** The Message Received event */
     MESSAGE_RECEIVED("messageReceived"), 
     
     /** The Message Sent event */
     MESSAGE_SENT("messageSent"), 
     
+    /** The InputClosed event */
+    INPUT_CLOSED("inputClosed"), 
+    
     /** The Exception Caught event */
     EXCEPTION_CAUGHT("exceptionCaught");
 

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
index 3eb66f8..677560d 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
@@ -20,7 +20,6 @@
 package org.apache.mina.statemachine.transition;
 
 import org.apache.mina.statemachine.State;
-import org.apache.mina.statemachine.StateMachine;
 import org.apache.mina.statemachine.event.Event;
 
 /**
@@ -111,7 +110,8 @@ public abstract class AbstractTransition implements Transition {
      *         next {@link State}. <tt>false</tt> otherwise.
      */
     protected abstract boolean doExecute(Event event);
-
+    
+    @Override
     public boolean equals(Object o) {
         if (o == this) {
             return true;
@@ -141,6 +141,7 @@ public abstract class AbstractTransition implements Transition {
         }
     }
 
+    @Override
     public int hashCode() {
         int h = 17;
         
@@ -155,11 +156,13 @@ public abstract class AbstractTransition implements Transition {
         return h;
     }
 
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         
         sb.append("eventId=").append(eventId);
         sb.append(",nextState=").append(nextState);
+        
         return sb.toString();
     }
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AmbiguousMethodException.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AmbiguousMethodException.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AmbiguousMethodException.java
index ed58cf5..23df150 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AmbiguousMethodException.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AmbiguousMethodException.java
@@ -37,5 +37,4 @@ public class AmbiguousMethodException extends RuntimeException {
     public AmbiguousMethodException(String methodName) {
         super(methodName);
     }
-
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodSelfTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodSelfTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodSelfTransition.java
index 40c62a0..a761c59 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodSelfTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodSelfTransition.java
@@ -24,7 +24,6 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 
 import org.apache.mina.statemachine.State;
-import org.apache.mina.statemachine.StateMachine;
 import org.apache.mina.statemachine.context.StateContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,10 +65,8 @@ public class MethodSelfTransition extends AbstractSelfTransition {
     /**
      * Creates a new instance
      * 
-     * @param methodName
-     *            the target method.
-     * @param target
-     *            the target object.
+     * @param methodName the target method.
+     * @param target the target object.
      */
     public MethodSelfTransition(String methodName, Object target) {
 
@@ -78,12 +75,13 @@ public class MethodSelfTransition extends AbstractSelfTransition {
         Method[] candidates = target.getClass().getMethods();
         Method result = null;
 
-        for (int i = 0; i < candidates.length; i++) {
-            if (candidates[i].getName().equals(methodName)) {
+        for (Method candidate : candidates) {
+            if (candidate.getName().equals(methodName)) {
                 if (result != null) {
                     throw new AmbiguousMethodException(methodName);
                 }
-                result = candidates[i];
+                
+                result = candidate;
             }
         }
 
@@ -102,11 +100,16 @@ public class MethodSelfTransition extends AbstractSelfTransition {
         return method;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public boolean doExecute(StateContext stateContext, State state) {
         Class<?>[] types = method.getParameterTypes();
 
         if (types.length == 0) {
             invokeMethod(EMPTY_ARGUMENTS);
+            
             return true;
         }
 
@@ -121,6 +124,7 @@ public class MethodSelfTransition extends AbstractSelfTransition {
         if (types[i].isAssignableFrom(StateContext.class)) {
             args[i++] = stateContext;
         }
+        
         if ((i < types.length) && types[i].isAssignableFrom(State.class)) {
             args[i++] = state;
         }
@@ -135,15 +139,16 @@ public class MethodSelfTransition extends AbstractSelfTransition {
             if (LOGGER.isDebugEnabled()) {
                 LOGGER.debug("Executing method " + method + " with arguments " + Arrays.asList(arguments));
             }
+            
             method.invoke(target, arguments);
         } catch (InvocationTargetException ite) {
             if (ite.getCause() instanceof RuntimeException) {
                 throw (RuntimeException) ite.getCause();
             }
+            
             throw new MethodInvocationException(method, ite);
         } catch (IllegalAccessException iae) {
             throw new MethodInvocationException(method, iae);
         }
     }
-
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodTransition.java
index 2c37de8..064c57f 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/MethodTransition.java
@@ -24,9 +24,6 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 
 import org.apache.mina.statemachine.State;
-import org.apache.mina.statemachine.StateMachine;
-import org.apache.mina.statemachine.StateMachineFactory;
-import org.apache.mina.statemachine.annotation.Transition;
 import org.apache.mina.statemachine.context.StateContext;
 import org.apache.mina.statemachine.event.Event;
 import org.slf4j.Logger;
@@ -189,11 +186,16 @@ public class MethodTransition extends AbstractTransition {
         return target;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public boolean doExecute(Event event) {
         Class<?>[] types = method.getParameterTypes();
 
         if (types.length == 0) {
             invokeMethod(EMPTY_ARGUMENTS);
+            
             return true;
         }
 
@@ -204,13 +206,17 @@ public class MethodTransition extends AbstractTransition {
         Object[] args = new Object[types.length];
 
         int i = 0;
+        
         if (match(types[i], event, Event.class)) {
             args[i++] = event;
         }
+        
         if (i < args.length && match(types[i], event.getContext(), StateContext.class)) {
             args[i++] = event.getContext();
         }
+        
         Object[] eventArgs = event.getArguments();
+        
         for (int j = 0; i < args.length && j < eventArgs.length; j++) {
             if (match(types[i], eventArgs[j], Object.class)) {
                 args[i++] = eventArgs[j];
@@ -231,28 +237,36 @@ public class MethodTransition extends AbstractTransition {
             if (paramType.equals(Boolean.TYPE)) {
                 return arg instanceof Boolean;
             }
+            
             if (paramType.equals(Integer.TYPE)) {
                 return arg instanceof Integer;
             }
+            
             if (paramType.equals(Long.TYPE)) {
                 return arg instanceof Long;
             }
+            
             if (paramType.equals(Short.TYPE)) {
                 return arg instanceof Short;
             }
+            
             if (paramType.equals(Byte.TYPE)) {
                 return arg instanceof Byte;
             }
+            
             if (paramType.equals(Double.TYPE)) {
                 return arg instanceof Double;
             }
+            
             if (paramType.equals(Float.TYPE)) {
                 return arg instanceof Float;
             }
+            
             if (paramType.equals(Character.TYPE)) {
                 return arg instanceof Character;
             }
         }
+        
         return argType.isAssignableFrom(paramType) && paramType.isAssignableFrom(arg.getClass());
     }
 
@@ -261,17 +275,20 @@ public class MethodTransition extends AbstractTransition {
             if (LOGGER.isDebugEnabled()) {
                 LOGGER.debug("Executing method " + method + " with arguments " + Arrays.asList(arguments));
             }
+            
             method.invoke(target, arguments);
         } catch (InvocationTargetException ite) {
             if (ite.getCause() instanceof RuntimeException) {
                 throw (RuntimeException) ite.getCause();
             }
+            
             throw new MethodInvocationException(method, ite);
         } catch (IllegalAccessException iae) {
             throw new MethodInvocationException(method, iae);
         }
     }
 
+    @Override
     public boolean equals(Object o) {
         if (o == this) {
             return true;
@@ -286,6 +303,7 @@ public class MethodTransition extends AbstractTransition {
         return method.equals(that.method) && target.equals(that.target);
     }
 
+    @Override
     public int hashCode() {
         int h = 17;
         h = h*37 + super.hashCode();
@@ -295,6 +313,7 @@ public class MethodTransition extends AbstractTransition {
         return h;
     }
 
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoSuchMethodException.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoSuchMethodException.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoSuchMethodException.java
index ed91755..51cff57 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoSuchMethodException.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoSuchMethodException.java
@@ -37,5 +37,4 @@ public class NoSuchMethodException extends RuntimeException {
     public NoSuchMethodException(String methodName) {
         super(methodName);
     }
-
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoopTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoopTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoopTransition.java
index 9776620..9a8b7db 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoopTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/NoopTransition.java
@@ -50,6 +50,10 @@ public class NoopTransition extends AbstractTransition {
         super(eventId, nextState);
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     protected boolean doExecute(Event event) {
         return true;
     }

http://git-wip-us.apache.org/repos/asf/mina/blob/87e4ac5f/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
index c7f1abf..3108714 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
@@ -20,7 +20,6 @@
 package org.apache.mina.statemachine.transition;
 
 import org.apache.mina.statemachine.State;
-import org.apache.mina.statemachine.StateMachine;
 import org.apache.mina.statemachine.event.Event;
 
 /**