class SessionStorage {

    public synchronized T getSessionIdentifier(final String sessionId) {
        if (sessionId == null) {
            LOGGER.warn("No session given. Unable to determine a session"
                    + " identifier");
            return null;
        }
        T identifier = sessions.get(sessionId);
        if (identifier == null) {
            identifier = factory.createSessionIdentifier(sessionId);
            sessions.put(sessionId, identifier);
        }
        return identifier;
    }

    public  SessionStorage(final SessionIdentifierFactory<T> identifierFactory);

}