package nextapp.echo2.webcontainer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.WeakHashMap;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import nextapp.echo2.app.ApplicationInstance;
import nextapp.echo2.app.Component;
import nextapp.echo2.app.TaskQueueHandle;
import nextapp.echo2.app.update.UpdateManager;
import nextapp.echo2.webcontainer.util.IdTable;
import nextapp.echo2.webrender.Connection;
import nextapp.echo2.webrender.UserInstance;
private static final int DEFAULT_CALLBACK_INTERVAL = 500;
return "c_" + component.getRenderId();
}
new ContainerInstance(conn);
}
private ApplicationInstance applicationInstance;
private Map componentToRenderStateMap = new HashMap();
private transient IdTable idTable;
private boolean initialized = false;
private Map initialRequestParameterMap;
private transient Map taskQueueToCallbackIntervalMap;
super(conn);
setServerDelayMessage(DefaultServerDelayMessage.INSTANCE);
initialRequestParameterMap = new HashMap(conn.getRequest().getParameterMap());
}
return applicationInstance;
}
if (taskQueueToCallbackIntervalMap == null || taskQueueToCallbackIntervalMap.size() == 0) {
return DEFAULT_CALLBACK_INTERVAL;
}
Iterator it = taskQueueToCallbackIntervalMap.values().iterator();
int returnInterval = Integer.MAX_VALUE;
while (it.hasNext()) {
int interval = ((Integer) it.next()).intValue();
if (interval < returnInterval) {
returnInterval = interval;
}
}
return returnInterval;
}
try {
return applicationInstance.getComponentByRenderId(elementId.substring(2));
} catch (IndexOutOfBoundsException ex) {
throw new IllegalArgumentException("Invalid component element id: " + elementId);
}
}
if (idTable == null) {
idTable = new IdTable();
}
return idTable;
}
return initialRequestParameterMap;
}
return (RenderState) componentToRenderStateMap.get(component);
}
return applicationInstance.getUpdateManager();
}
public void init(Connection conn) {
if (initialized) {
throw new IllegalStateException("Attempt to invoke ContainerInstance.init() on initialized instance.");
}
WebContainerServlet servlet = (WebContainerServlet) conn.getServlet();
applicationInstance = servlet.newApplicationInstance();
ContainerContext containerContext = new ContainerContextImpl(this);
applicationInstance.setContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME, containerContext);
try {
ApplicationInstance.setActive(applicationInstance);
applicationInstance.doInit();
} finally {
ApplicationInstance.setActive(null);
}
initialized = true;
}
return initialized;
}
componentToRenderStateMap.remove(component);
}
public void setRenderState(Component component, RenderState renderState) {
componentToRenderStateMap.put(component, renderState);
}
if (taskQueueToCallbackIntervalMap == null) {
taskQueueToCallbackIntervalMap = new WeakHashMap();
}
taskQueueToCallbackIntervalMap.put(taskQueue, new Integer(ms));
}
super.sessionDidActivate(e);
if (applicationInstance != null) {
applicationInstance.activate();
}
}
if (applicationInstance != null) {
applicationInstance.passivate();
}
super.sessionWillPassivate(e);
}
if (applicationInstance != null) {
applicationInstance.dispose();
}
super.valueUnbound(e);
}
}