1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 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.core.service.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 */ 39 @Retention(RetentionPolicy.RUNTIME) 40 @Target(ElementType.METHOD) 41 @TransitionAnnotation(IoHandlerTransitions.class) 42 public @interface IoHandlerTransition { 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 IoHandlerEvents[] on() default IoHandlerEvents.ANY; 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 Transition.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 }