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

org.dspace.services.model.RequestInterceptor Maven / Gradle / Ivy

There is a newer version: 8.0
Show newest version
/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */
package org.dspace.services.model;

import org.dspace.kernel.mixins.OrderedService;

/**
 * Executes at the beginning and/or end of system requests.
 * 

* Note that the ordering of these must be set specifically higher than * 0 or an exception will occur. If you do not really care what the * order is you are encouraged to use 10. *

* Note that the highest priority interceptor will be executed first in * request start and last on request end. The lowest priority * interceptor would be executed last on request start and first on * request end. If you need an interceptor which can execute first on * request start and first on request end (or vice versa) then create 2 * interceptors. :-) * * @author Aaron Zeckoski (azeckoski @ gmail.com) */ public interface RequestInterceptor extends OrderedService { /** * Take actions before the request is handled for an operation. * This will be called just before each request is sent to the * correct request handler. For example: starting a transaction * would happen at this point. *

* If you want to interrupt the handling of this request (stop it) * then throw a {@link RequestInterruptionException}. * * @param requestId the unique id of the request * @param session the session associated with this request * @throws RequestInterruptionException if this interceptor wants to stop the request */ public void onStart(String requestId, Session session); /** * Take actions after the request is handled for an operation. * This will be called just before each operation is totally * completed. For example: closing a transaction would happen at * this point. *

* If you want to interrupt the handling of this request (stop it) * then throw a {@link RequestInterruptionException}. *

* NOTE: it is important to realize that this will be called * even if the request fails. Please check the incoming success * param to see if this request was successful or not. This is your * cue to rollback or commit, for example. * * @param requestId the unique id of the request * @param session the session associated with this request * @param succeeded true if the request operations were successful, false if there was a failure * @param failure this is the exception associated with the failure, it is null if there is no associated exception */ public void onEnd(String requestId, Session session, boolean succeeded, Exception failure); /** * Indicate that request processing should be halted. This should * only be used in extreme cases as it will halt all request * processing and cause any remaining interceptors to be skipped. * A message about the halt should be placed into the message field. */ public static class RequestInterruptionException extends RuntimeException { private static final long serialVersionUID = 1L; public RequestInterruptionException(String message, Throwable cause) { super(message, cause); } public RequestInterruptionException(String message) { super(message); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy