/* * Licensed to the Apache Software Foundation (ASF) under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional information regarding * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. You may obtain a * copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package org.apache.geode.modules.session.internal.filter; import org.apache.geode.modules.session.internal.filter.attributes.AbstractSessionAttributes; import java.util.HashMap; import java.util.Map; import java.util.UUID; import javax.servlet.http.HttpSession; /** * Class which fakes an in-memory basic session manager for testing purposes. */ public class DummySessionManager implements SessionManager { /** * Map of sessions */ private final Map<String, HttpSession> sessions = new HashMap<String, HttpSession>(); private class Attributes extends AbstractSessionAttributes { @Override public Object putAttribute(String attr, Object value) { return attributes.put(attr, value); } @Override public Object removeAttribute(String attr) { return attributes.remove(attr); } } /** * {@inheritDoc} */ @Override public void start(Object config, ClassLoader loader) {} /** * {@inheritDoc} */ @Override public void stop() {} /** * {@inheritDoc} */ @Override public HttpSession getSession(String id) { return sessions.get(id); } /** * {@inheritDoc} */ @Override public HttpSession wrapSession(HttpSession nativeSession) { String id = generateId(); AbstractSessionAttributes attributes = new Attributes(); GemfireHttpSession session = new GemfireHttpSession(id, nativeSession); session.setManager(this); session.setAttributes(attributes); sessions.put(id, session); return session; } /** * {@inheritDoc} */ @Override public HttpSession getWrappingSession(String nativeId) { return sessions.get(nativeId); } /** * {@inheritDoc} */ @Override public void putSession(HttpSession session) { // shouldn't ever get called throw new UnsupportedOperationException("Not supported yet."); } /** * {@inheritDoc} */ @Override public void destroySession(String id) { sessions.remove(id); } @Override public String destroyNativeSession(String id) { return null; } public String getSessionCookieName() { return "JSESSIONID"; } public String getJvmId() { return "jvm-id"; } /** * Generate an ID string */ private String generateId() { return UUID.randomUUID().toString().toUpperCase() + "-GF"; } }