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

org.dspace.services.RequestService 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;

import java.util.UUID;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.dspace.services.model.Request;
import org.dspace.services.model.RequestInterceptor;

/**
 * Allows for the managing of requests in the system in a way which is
 * independent of any underlying system or code.
 *
 * @author Aaron Zeckoski (azeckoski @ gmail.com)
 */
public interface RequestService {

    /**
     * Request attribute name for the current authenticated user
     */
    static final String AUTHENTICATED_EPERSON = "authenticated_eperson";

    /**
     * Initiates a request in the system.
     * Normally this would be triggered by a servlet request starting.
     * 

* Only one request can be associated with the current thread, so if * another one is running it will be destroyed and a new one will be * created. *

* Note that requests are expected to be manually ended somehow and * will not be closed out automatically. * * @return the unique generated id for the new request * @throws IllegalArgumentException if the session is null, invalid, or there is no current session */ public String startRequest(); /** * Initiates a request in the system, * normally this would be triggered by a servlet request starting
* Only one request can be associated with the current thread so if another one is running it will be * destroyed and a new one will be created
* Note that requests are expected to be manually ended somehow and will not be closed out automatically * * @param request servlet request * @param response servlet response * @return the unique generated id for the new request * @throws IllegalArgumentException if the session is null, invalid, or there is no current session */ public String startRequest(ServletRequest request, ServletResponse response); /** * Ends the current running request, this can indicate success or failure of the request, * this will trigger the interceptors and normally would be caused by a servlet request ending, * note that a request cannot be ended twice, once it is ended this will just return null * * @param failure (optional) this is the exception associated with * the failure. Leave as null if the request is ending successfully. * You can make up a {@link RuntimeException} if you just need to * indicate that the request failed. * @return the request ID if the request closes successfully and is * not already closed OR null if there is no current request. */ public String endRequest(Exception failure); /** * Finds out of there is a request running in this thread and if so * what the id of that request is. * * @return the id of the current request for this thread OR null if there is not one */ public String getCurrentRequestId(); /** * Finds out of there is a request running in this thread and if so returns it * * @return the current request for this thread OR null if there is not one */ public Request getCurrentRequest(); /** * Allows developers to perform actions on the start and end of the request cycle, * if you decide you do not need to use your interceptor anymore then simply destroy * it (dereference it) and the service will stop calling it, * along those lines you should * not register an interceptor that you do not keep a reference to (like an inline class * or registerRequestListener(new YourInterceptor())) as this will be destroyed immediately, * this registration is ClassLoader safe * * @param interceptor an implementation of {@link RequestInterceptor} * @throws IllegalArgumentException if this priority is invalid or the input is null */ public void registerRequestInterceptor(RequestInterceptor interceptor); /** * Access the current user id for the current session. * (also available from the current session) * * @return the id of the user associated with the current thread OR null if there is no user */ public String getCurrentUserId(); /** * Set the ID of the current authenticated user * * @return the id of the user associated with the current thread OR null if there is no user */ public void setCurrentUserId(UUID epersonId); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy