HttpSessions.java
/*
* This file is part of Waarp Project (named also Waarp or GG).
*
* Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
* tags. See the COPYRIGHT.txt in the distribution for a full listing of
* individual contributors.
*
* All Waarp Project is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* Waarp . If not, see <http://www.gnu.org/licenses/>.
*/
package org.waarp.http.protocol;
import org.waarp.http.protocol.servlet.HttpAuthent;
import java.util.concurrent.ConcurrentHashMap;
/**
* Handler for all sessions (upload only)
*/
public class HttpSessions {
private static final HttpSessions httpSessions = new HttpSessions();
private final ConcurrentHashMap<String, HttpResumableSession> sessions =
new ConcurrentHashMap<String, HttpResumableSession>();
private HttpSessions() {
// Empty and private
}
/**
* @return the current Factory for HttpSession
*/
public static HttpSessions getInstance() {
return httpSessions;
}
/**
* Get a already existing HttpResumableSession or create a new one if not
* exists
*
* @param resumableInfo
* @param rulename
* @param comment
* @param authent
*
* @return the HttpResumableSession
*/
public synchronized HttpResumableSession getOrCreateResumableSession(
final HttpResumableInfo resumableInfo, final String rulename,
final String comment, final HttpAuthent authent) {
HttpResumableSession session = sessions.get(resumableInfo.getIdentifier());
if (session == null) {
session =
new HttpResumableSession(resumableInfo, rulename, comment, authent);
sessions.put(resumableInfo.getIdentifier(), session);
}
return session;
}
/**
* Check if session is already existing
*
* @param resumableInfo
*
* @return True if contained
*/
protected final boolean contains(final HttpResumableInfo resumableInfo) {
return sessions.containsKey(resumableInfo.getIdentifier());
}
/**
* Removes the current session
*
* @param resumableInfo
*
* @return True if found
*/
public final boolean removeSession(final HttpResumableInfo resumableInfo) {
return sessions.remove(resumableInfo.getIdentifier()) != null;
}
/**
* Removes the current session
*
* @param resumableSession
*
* @return True if found
*/
public final boolean removeSession(
final HttpResumableSession resumableSession) {
return sessions.remove(
resumableSession.getHttpResumableInfo().getIdentifier()) != null;
}
}