Index: core/src/main/java/org/icefaces/application/WindowScopeManager.java =================================================================== --- core/src/main/java/org/icefaces/application/WindowScopeManager.java (revision Local version) +++ core/src/main/java/org/icefaces/application/WindowScopeManager.java (revision Shelved version) @@ -158,8 +158,18 @@ timestamp = System.currentTimeMillis(); state.disposedWindowScopedMaps.addLast(state.windowScopedMaps.remove(id)); } + + @Override + public Object put(Object key, Object value) { + return super.put(key, value); //To change body of overridden methods use File | Settings | File Templates. - } + } + @Override + public Object get(Object key) { + return super.get(key); //To change body of overridden methods use File | Settings | File Templates. + } + } + public static void onActivatedWindow(HttpSession session, Configuration configuration, Observer observer) { getState(session, configuration).activatedWindowNotifier.addObserver(observer); } Index: core/src/main/java/org/icefaces/context/DOMResponseWriter.java =================================================================== --- core/src/main/java/org/icefaces/context/DOMResponseWriter.java (revision Local version) +++ core/src/main/java/org/icefaces/context/DOMResponseWriter.java (revision Shelved version) @@ -32,6 +32,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; +import org.icefaces.application.WindowScopeManager; import javax.faces.component.UIComponent; import javax.faces.component.UIViewRoot; @@ -70,7 +71,7 @@ private boolean suppressNextNode = false; - // flag to indicate we shouldn't escape + // flag to indicate we shouldn't escape private boolean dontEscape; // flag to indicate that we're writing a 'script' or 'style' element @@ -429,7 +430,7 @@ public void saveOldDocument() throws IOException { FacesContext facesContext = FacesContext.getCurrentInstance(); if (!EnvUtils.isCompressDOM(facesContext)) { - facesContext.getViewRoot().getAttributes().put(OLD_DOM, document); + WindowScopeManager.lookupWindowScope(facesContext).put(OLD_DOM, document); return; } byte[] data; @@ -438,21 +439,19 @@ serializer.setOutputStream(out); serializer.serialize(document); data = out.toByteArray(); - facesContext.getViewRoot().getAttributes().put(OLD_DOM, data); + WindowScopeManager.lookupWindowScope(facesContext).put(OLD_DOM, data); } public Document getOldDocument() { FacesContext facesContext = FacesContext.getCurrentInstance(); if (!EnvUtils.isCompressDOM(facesContext)) { - return (Document) facesContext.getViewRoot() - .getAttributes().get(OLD_DOM); + return (Document) WindowScopeManager.lookupWindowScope(facesContext).get(OLD_DOM); } Document document = DOMUtils.getNewDocument(); //FastInfoset does not tolerate stray xmlns declarations document.setStrictErrorChecking(false); try { - byte[] data = (byte[]) facesContext.getViewRoot() - .getAttributes().get(OLD_DOM); + byte[] data = (byte[]) WindowScopeManager.lookupWindowScope(facesContext).get(OLD_DOM); DOMDocumentParser parser = new DOMDocumentParser(); ByteArrayInputStream in = new ByteArrayInputStream(data); parser.parse(document, in);