All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.stripes.action.After Maven / Gradle / Ivy

/* Copyright 2005-2006 Tim Fennell
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.sourceforge.stripes.action;

import net.sourceforge.stripes.controller.LifecycleStage;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 

Specifies that the annotated method should be run after the specified * {@link LifecycleStage}(s). More than one LifecycleStage can be specified, in which case the * method will be run after each stage completes. If no LifecycleStage is specified then the * default is to execute the method after {@link LifecycleStage#EventHandling}. * {@link LifecycleStage#RequestInit} cannot be specified because there is no ActionBean * to run a method on before the ActionBean has been resolved!

* *

The method may have any name, any access specifier (public, private etc.) and must take * no arguments. Methods may return values; if the value is a * {@link net.sourceforge.stripes.action.Resolution} it will be used immediately to terminate * the request. Any other values returned will be ignored.

* *

Examples:

*
 * // Runs only after the event handling method has been run
 * {@literal @After}
 * public void doStuff() {
 *    ...
 * }
 *
 * // Runs after binding and validation have completed
 * {@literal @After(stages = LifecycleStage.BindingAndValidation)}
 * public void doPostValidationStuff() {
 *    ...
 * }
 *
 * // Runs twice, once after each validation-related stage
 * {@literal @}After(stages = {LifecycleStage.BindingAndValidation, LifecycleStage.CustomValidation})
 * public void doMorePostValidationStuff() {
 *    ...
 * }
 * 
* * @see net.sourceforge.stripes.action.Before * @see net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor * @author Jeppe Cramon * @since Stripes 1.3 */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) @Inherited @Documented public @interface After { /** One or more lifecycle stages after which the method should be called. */ LifecycleStage[] stages() default LifecycleStage.EventHandling; /** * Allows the method to be restricted to one or more events. By default the method will * be executed on all events. Can be used to specify one or more events to apply the method * to (e.g. on={"save", "update"}), or to specify one or more events not to apply * the method to (e.g. on="!delete"). */ String[] on() default {}; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy