I changed some various APIs for this. Instead of storing the source as an HttpSession, it is now stored as an Object. This way the PortletSession can be stored as well. The HttpSession's API was never explicitly used any ways and the superclass EventObject was storing it as an Object anyhow.
ContextEventRepeater:
public synchronized static void iceFacesIdDisposed(final Object source, final String iceFacesId)
public synchronized static void iceFacesIdRetrieved(final Object source, final String iceFacesId)
public synchronized static void viewNumberDisposed(final Object source, final String iceFacesId, final int viewNumber)
public synchronized static void viewNumberRetrieved(final Object source, final String iceFacesId, final int viewNumber)
ICEfacesIDDisposedEvent:
public ICEfacesIDDisposedEvent(final Object source, final String iceFacesId)
ICEfacesIDRetrievedEvent:
public ICEfacesIDRetrievedEvent(final Object source, final String iceFacesId)
ViewNumberDisposedEvent:
public ViewNumberDisposedEvent(final Object source, final String iceFacesId, final int viewNumber)
ViewNumberRetrievedEvent:
public ViewNumberRetrievedEvent(final Object source, final String iceFacesId, final int viewNumber)
AbstractSessionEvent:
public Object getSession()
public void dispose()
{ dispose.run(); --> ContextEventRepeater.viewNumberDisposed( (HttpSession)facesContext.getExternalContext().getSession(false), sessionID, Integer.parseInt(viewIdentifier)); }This throws a ClassCastException with the following line:
ERROR - java.lang.ClassCastException: com.icesoft.faces.webapp.http.portlet.InterceptingPortletSession -