01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: *
19: */
20: package org.apache.mina.statemachine.annotation;
21:
22: import java.lang.annotation.ElementType;
23: import java.lang.annotation.Retention;
24: import java.lang.annotation.RetentionPolicy;
25: import java.lang.annotation.Target;
26:
27: import org.apache.mina.common.IoHandler;
28: import org.apache.mina.statemachine.StateMachine;
29: import org.apache.mina.statemachine.event.IoHandlerEvents;
30:
31: /**
32: * Annotation used on methods to indicate that the method handles a specific
33: * kind of {@link IoHandlerEvents} event when in a specific state. This should
34: * be used when creating {@link StateMachine}s for MINA's {@link IoHandler}
35: * interface.
36: *
37: * @author The Apache MINA Project (dev@mina.apache.org)
38: * @version $Rev: 592475 $, $Date: 2007-11-06 09:03:42 -0700 (Tue, 06 Nov 2007) $
39: */
40: @Retention(RetentionPolicy.RUNTIME)
41: @Target(ElementType.METHOD)
42: @TransitionAnnotation(IoHandlerTransitions.class)
43: public @interface IoHandlerTransition {
44: /**
45: * Specifies the ids of one or more events handled by the annotated method. If
46: * not specified the handler method will be executed for any event.
47: */
48: IoHandlerEvents[] on() default IoHandlerEvents.ANY;
49:
50: /**
51: * The id of the state or states that this handler applies to. Must be
52: * specified.
53: */
54: String[] in();
55:
56: /**
57: * The id of the state the {@link StateMachine} should move to next after
58: * executing the annotated method. If not specified the {@link StateMachine}
59: * will remain in the same state.
60: */
61: String next() default Transition.SELF;
62:
63: /**
64: * The weight used to order handler annotations which match the same event
65: * in the same state. Transitions with lower weight will be matched first. The
66: * default weight is 0.
67: */
68: int weight() default 0;
69: }
|