001/* 002 * GWTEventService 003 * Copyright (c) 2011 and beyond, strawbill UG (haftungsbeschr?nkt) 004 * 005 * This is free software; you can redistribute it and/or modify it 006 * under the terms of the GNU Lesser General Public License as 007 * published by the Free Software Foundation; either version 3 of 008 * the License, or (at your option) any later version. 009 * Other licensing for GWTEventService may also be possible on request. 010 * Please view the license.txt of the project for more information. 011 * 012 * This software is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this software; if not, write to the Free 019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 021 */ 022package de.novanic.eventservice.service.connection.id; 023 024import de.novanic.eventservice.service.exception.NoSessionAvailableException; 025 026import javax.servlet.http.HttpServletRequest; 027import javax.servlet.http.HttpSession; 028 029/** 030 * A {@link de.novanic.eventservice.service.connection.id.ConnectionIdGenerator} generates unique ids which are used to 031 * identify the connected clients / users. 032 * 033 * That implementation of {@link de.novanic.eventservice.service.connection.id.ConnectionIdGenerator} uses session ids 034 * as a unique connection / client id. 035 * 036 * @author sstrohschein 037 * <br>Date: 28.03.2010 038 * <br>Time: 23:34:26 039 */ 040public class SessionConnectionIdGenerator implements ConnectionIdGenerator 041{ 042 /** 043 * Generates a new connection / client id. 044 * The {@link de.novanic.eventservice.service.connection.id.SessionConnectionIdGenerator} creates a new session with that call when 045 * no session is available. 046 * @param aRequest request from the client 047 * @return unique connection / client id 048 */ 049 public String generateConnectionId(HttpServletRequest aRequest) { 050 return aRequest.getSession(true).getId(); 051 } 052 053 /** 054 * Returns the previous generated connection / client id 055 * (see {@link de.novanic.eventservice.service.connection.id.ConnectionIdGenerator#generateConnectionId(javax.servlet.http.HttpServletRequest)}) 056 * without generating a new connection / client id. 057 * @see de.novanic.eventservice.service.connection.id.ConnectionIdGenerator#generateConnectionId(javax.servlet.http.HttpServletRequest) 058 * @param aRequest request 059 * @return the previous generated connection / client id for the specific client 060 */ 061 public String getConnectionId(HttpServletRequest aRequest) { 062 final HttpSession theSession = aRequest.getSession(false); 063 if(theSession == null) { 064 throw new NoSessionAvailableException("There is no session available! Maybe no session was generated explicitly by the connection id generator."); 065 } 066 return theSession.getId(); 067 } 068}