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.statemachine.StateMachine;
28: import org.apache.mina.statemachine.event.Event;
29:
30: /**
31: * Annotation used on methods to indicate that the method handles a specific
32: * kind of event when in a specific state.
33: *
34: * @author The Apache MINA Project (dev@mina.apache.org)
35: * @version $Rev: 592475 $, $Date: 2007-11-06 09:03:42 -0700 (Tue, 06 Nov 2007) $
36: */
37: @Retention(RetentionPolicy.RUNTIME)
38: @Target(ElementType.METHOD)
39: @TransitionAnnotation(Transitions.class)
40: public @interface Transition {
41: public static final String SELF = "__self__";
42:
43: /**
44: * Specifies the ids of one or more events handled by the annotated method. If
45: * not specified the handler method will be executed for any event.
46: */
47: String[] on() default Event.WILDCARD_EVENT_ID;
48:
49: /**
50: * The id of the state or states that this handler applies to. Must be
51: * specified.
52: */
53: String[] in();
54:
55: /**
56: * The id of the state the {@link StateMachine} should move to next after
57: * executing the annotated method. If not specified the {@link StateMachine}
58: * will remain in the same state.
59: */
60: String next() default SELF;
61:
62: /**
63: * The weight used to order handler annotations which match the same event
64: * in the same state. Transitions with lower weight will be matched first. The
65: * default weight is 0.
66: */
67: int weight() default 0;
68: }
|