package org.safehaus.penrose.management.session; import org.safehaus.penrose.management.BaseService; import org.safehaus.penrose.management.PenroseJMXService; import org.safehaus.penrose.session.SessionManagerServiceMBean; import org.safehaus.penrose.session.SessionManager; import org.safehaus.penrose.session.SessionManagerClient; import org.safehaus.penrose.session.Session; import java.util.ArrayList; import java.util.Collection; /** * @author Endi Sukma Dewata */ public class SessionManagerService extends BaseService implements SessionManagerServiceMBean { public final Collection<String> EMPTY = new ArrayList<String>(); SessionManager sessionManager; public SessionManagerService(PenroseJMXService jmxService, SessionManager sessionManager) { this.jmxService = jmxService; this.sessionManager = sessionManager; } public Object getObject() { return sessionManager; } public String getObjectName() { return SessionManagerClient.getStringObjectName(); } public Collection<String> getSessionNames() throws Exception { Collection<String> list = new ArrayList<String>(); list.addAll(sessionManager.getSessionNames()); return list; } public Collection<String> getOperationNames(String sessionName) throws Exception { Session session = sessionManager.getSession(sessionName); if (session == null) { log.debug("Session "+sessionName+" not found."); return EMPTY; } Collection<String> list = new ArrayList<String>(); list.addAll(session.getOperationNames()); return list; } public SessionService getSessionService(String sessionName) throws Exception { return new SessionService(jmxService, sessionManager, sessionName); } public void closeSession(String sessionName) throws Exception { Session session = sessionManager.getSession(sessionName); if (session == null) { log.debug("Session "+sessionName+" not found."); return; } session.close(); log.debug("Session "+sessionName+" closed."); } public void abandonOperation(String sessionName, String operationName) throws Exception { Session session = sessionManager.getSession(sessionName); if (session == null) { log.debug("Session "+sessionName+" not found."); return; } session.abandon(operationName); log.debug("Operation "+operationName+" in session "+sessionName+" abandoned."); } }