package com.voxeo.tropo.util;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.servlet.sip.SipSession;
import com.micromethod.common.util.jmx.JmxHelper;
import com.micromethod.common.util.jmx.ObjectNameFactory;
import com.voxeo.tropo.core.CallImpl;
public class DumpHelper {
private static MBeanServer SERVER = null;
private static final ObjectName SESSION_MANAGER = ObjectNameFactory
.create("com.micromethod.sipmethod:name=session,type=server.service.sip.manager");
public static void initialization(final MBeanServer server) {
SERVER = server;
}
@SuppressWarnings("unchecked")
public static List<String> dumpCall() {
final List<String> retval = new ArrayList<String>();
final Collection<SipSession> sessions = (Collection<SipSession>) JmxHelper.getMBeanAttribute(SERVER,
SESSION_MANAGER, "Sessions");
int index = 0;
for (final SipSession session : sessions) {
index = index + 1;
CallImpl call = null;
if (session.isValid()) {
try {
call = (CallImpl) session.getAttribute(CallImpl.INST);
}
catch (final Throwable t) {
;
}
}
String message = MessageFormat.format("{0}. ID={1}, State={2}, Call={3}", index, session.getId(), session
.getState(), call);
if (call != null) {
message = MessageFormat.format(message + ", CallState={0}, CallCreatedTime={1}", call.getState(), new Date(call
.getCreatedTime()));
}
message = message + ";";
retval.add(message);
}
return retval;
}
}