Subversion Repositories bacoAlunos

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.es.exemplos.hibernate.security;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by jorgemachado on 23/10/18.
 */

public class SecurityContextProvider
{

    private static SecurityContextProvider singletonInstance = new SecurityContextProvider();

    private Map<Thread, SecuritySessionContext> sessions = new HashMap<Thread,SecuritySessionContext>();

    private SecurityContextProvider(){}

    public static SecurityContextProvider getInstance()
    {
        return singletonInstance;
    }


    public SecuritySessionContext getSecuritySessionContext()
    {
        SecuritySessionContext securitySessionContext = sessions.get(1.5.0/docs/api/java/lang/Thread.html">Thread.currentThread());
        if(securitySessionContext == null)
            throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("SecuritySessionContext not registered");
        return securitySessionContext;
    }

    /**
     * O Requester pode ser um cookie
     * @param requester
     * @return
     */

    public synchronized SecuritySessionContext registerSessionContext(1.5.0/docs/api/java/lang/String.html">String requester)
    {
        if(requester == null)
        {
            throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("SecuritySessionContext must be registered with A VALID requester");
        }
        SecuritySessionContext securitySessionContext = new SecuritySessionContext();
        securitySessionContext.setRequester(requester);
        sessions.put(1.5.0/docs/api/java/lang/Thread.html">Thread.currentThread(),securitySessionContext);
        return securitySessionContext;
    }


    public void unregisterSecuritySessionContext()
    {
        SecuritySessionContext securitySessionContext = getSecuritySessionContext();
        securitySessionContext.setRequester(null);
    }



}