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 * @version $Rev: 671827 $, $Date: 2008-06-26 10:49:48 +0200 (jeu, 26 jun 2008) $ 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 }