akka.japi.pf
Class FSMStateFunctionBuilder<S,D>

java.lang.Object
  extended by akka.japi.pf.FSMStateFunctionBuilder<S,D>
Type Parameters:
S - the state type
D - the data type This is an EXPERIMENTAL feature and is subject to change until it has received more real world testing.

public class FSMStateFunctionBuilder<S,D>
extends java.lang.Object

Builder used to create a partial function for FSM.whenUnhandled(scala.PartialFunction, akka.actor.FSM.State>).


Constructor Summary
FSMStateFunctionBuilder()
           
 
Method Summary
 FSMStateFunctionBuilder<S,D> anyEvent(FI.Apply2<java.lang.Object,D,FSM.State<S,D>> apply)
          Add a case statement that matches on any type of event.
 scala.PartialFunction<FSM.Event<D>,FSM.State<S,D>> build()
          Build a PartialFunction from this builder.
<P,Q> FSMStateFunctionBuilder<S,D>
event(java.lang.Class<P> eventType, java.lang.Class<Q> dataType, FI.Apply2<P,Q,FSM.State<S,D>> apply)
          Add a case statement that matches on an event and data type.
<P,Q> FSMStateFunctionBuilder<S,D>
event(java.lang.Class<P> eventType, java.lang.Class<Q> dataType, FI.TypedPredicate2<P,Q> predicate, FI.Apply2<P,Q,FSM.State<S,D>> apply)
          Add a case statement that matches on an event and data type and a predicate.
<P> FSMStateFunctionBuilder<S,D>
event(java.lang.Class<P> eventType, FI.Apply2<P,D,FSM.State<S,D>> apply)
          Add a case statement that matches if the event type and predicate matches.
<P> FSMStateFunctionBuilder<S,D>
event(java.lang.Class<P> eventType, FI.TypedPredicate2<P,D> predicate, FI.Apply2<P,D,FSM.State<S,D>> apply)
          Add a case statement that matches if the event type and predicate matches.
 FSMStateFunctionBuilder<S,D> event(FI.TypedPredicate2<java.lang.Object,D> predicate, FI.Apply2<java.lang.Object,D,FSM.State<S,D>> apply)
          Add a case statement that matches if the predicate matches.
<Q> FSMStateFunctionBuilder<S,D>
event(java.util.List<java.lang.Object> eventMatches, java.lang.Class<Q> dataType, FI.Apply2<java.lang.Object,Q,FSM.State<S,D>> apply)
          Add a case statement that matches on the data type and if any of the event types in the list match or any of the event instances in the list compares equal.
 FSMStateFunctionBuilder<S,D> event(java.util.List<java.lang.Object> eventMatches, FI.Apply2<java.lang.Object,D,FSM.State<S,D>> apply)
          Add a case statement that matches if any of the event types in the list match or any of the event instances in the list compares equal.
<P,Q> FSMStateFunctionBuilder<S,D>
eventEquals(P event, java.lang.Class<Q> dataType, FI.Apply2<P,Q,FSM.State<S,D>> apply)
          Add a case statement that matches on the data type and if the event compares equal.
<P> FSMStateFunctionBuilder<S,D>
eventEquals(P event, FI.Apply2<P,D,FSM.State<S,D>> apply)
          Add a case statement that matches if event compares equal.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FSMStateFunctionBuilder

public FSMStateFunctionBuilder()
Method Detail

event

public final <P,Q> FSMStateFunctionBuilder<S,D> event(java.lang.Class<P> eventType,
                                                      java.lang.Class<Q> dataType,
                                                      FI.TypedPredicate2<P,Q> predicate,
                                                      FI.Apply2<P,Q,FSM.State<S,D>> apply)
Add a case statement that matches on an event and data type and a predicate.

Type Parameters:
P - the event type to match on
Q - the data type to match on
Parameters:
eventType - the event type to match on
dataType - the data type to match on
predicate - a predicate to evaluate on the matched types
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

event

public <P,Q> FSMStateFunctionBuilder<S,D> event(java.lang.Class<P> eventType,
                                                java.lang.Class<Q> dataType,
                                                FI.Apply2<P,Q,FSM.State<S,D>> apply)
Add a case statement that matches on an event and data type.

Type Parameters:
P - the event type to match on
Q - the data type to match on
Parameters:
eventType - the event type to match on
dataType - the data type to match on
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

event

public <P> FSMStateFunctionBuilder<S,D> event(java.lang.Class<P> eventType,
                                              FI.TypedPredicate2<P,D> predicate,
                                              FI.Apply2<P,D,FSM.State<S,D>> apply)
Add a case statement that matches if the event type and predicate matches.

Parameters:
eventType - the event type to match on
predicate - a predicate that will be evaluated on the data and the event
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

event

public <P> FSMStateFunctionBuilder<S,D> event(java.lang.Class<P> eventType,
                                              FI.Apply2<P,D,FSM.State<S,D>> apply)
Add a case statement that matches if the event type and predicate matches.

Parameters:
eventType - the event type to match on
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

event

public FSMStateFunctionBuilder<S,D> event(FI.TypedPredicate2<java.lang.Object,D> predicate,
                                          FI.Apply2<java.lang.Object,D,FSM.State<S,D>> apply)
Add a case statement that matches if the predicate matches.

Parameters:
predicate - a predicate that will be evaluated on the data and the event
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

event

public <Q> FSMStateFunctionBuilder<S,D> event(java.util.List<java.lang.Object> eventMatches,
                                              java.lang.Class<Q> dataType,
                                              FI.Apply2<java.lang.Object,Q,FSM.State<S,D>> apply)
Add a case statement that matches on the data type and if any of the event types in the list match or any of the event instances in the list compares equal.

Type Parameters:
Q - the data type to match on
Parameters:
eventMatches - a list of types or instances to match against
dataType - the data type to match on
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

event

public FSMStateFunctionBuilder<S,D> event(java.util.List<java.lang.Object> eventMatches,
                                          FI.Apply2<java.lang.Object,D,FSM.State<S,D>> apply)
Add a case statement that matches if any of the event types in the list match or any of the event instances in the list compares equal.

Parameters:
eventMatches - a list of types or instances to match against
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

eventEquals

public <P,Q> FSMStateFunctionBuilder<S,D> eventEquals(P event,
                                                      java.lang.Class<Q> dataType,
                                                      FI.Apply2<P,Q,FSM.State<S,D>> apply)
Add a case statement that matches on the data type and if the event compares equal.

Type Parameters:
Q - the data type to match on
Parameters:
event - an event to compare equal against
dataType - the data type to match on
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

eventEquals

public <P> FSMStateFunctionBuilder<S,D> eventEquals(P event,
                                                    FI.Apply2<P,D,FSM.State<S,D>> apply)
Add a case statement that matches if event compares equal.

Parameters:
event - an event to compare equal against
apply - an action to apply to the event and state data if there is a match
Returns:
the builder with the case statement added

anyEvent

public FSMStateFunctionBuilder<S,D> anyEvent(FI.Apply2<java.lang.Object,D,FSM.State<S,D>> apply)
Add a case statement that matches on any type of event.

Parameters:
apply - an action to apply to the event and state data
Returns:
the builder with the case statement added

build

public scala.PartialFunction<FSM.Event<D>,FSM.State<S,D>> build()
Build a PartialFunction from this builder. After this call the builder will be reset.

Returns:
a PartialFunction for this builder.