048ef0565aa19f04e966ee05cf018dab8963a49a
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / exceptions / CustomExceptionHandler.java
1 package com.indexdata.pz2utils4jsf.exceptions;\r
2 \r
3 import java.util.Iterator;\r
4 \r
5 import javax.faces.FacesException;\r
6 import javax.faces.application.NavigationHandler;\r
7 import javax.faces.application.ViewExpiredException;\r
8 import javax.faces.context.ExceptionHandler;\r
9 import javax.faces.context.ExceptionHandlerWrapper;\r
10 import javax.faces.context.FacesContext;\r
11 import javax.faces.event.ExceptionQueuedEvent;\r
12 import javax.faces.event.ExceptionQueuedEventContext;\r
13 \r
14 public class CustomExceptionHandler extends ExceptionHandlerWrapper {\r
15 \r
16   private ExceptionHandler wrapped;\r
17   \r
18   public CustomExceptionHandler (ExceptionHandler wrapped) {\r
19     this.wrapped = wrapped;\r
20   }\r
21     \r
22   @Override\r
23   public ExceptionHandler getWrapped() {\r
24     return this.wrapped;\r
25   }\r
26 \r
27   @Override\r
28   public void handle() throws FacesException {\r
29     for (Iterator<ExceptionQueuedEvent> i = getUnhandledExceptionQueuedEvents().iterator(); i.hasNext();) {\r
30       ExceptionQueuedEvent event = i.next();\r
31       ExceptionQueuedEventContext context = (ExceptionQueuedEventContext) event.getSource();\r
32       Throwable t = context.getException();\r
33       if (t instanceof ViewExpiredException) {\r
34         // ViewExpiredException vee = (ViewExpiredException) t;\r
35         FacesContext fc = FacesContext.getCurrentInstance();\r
36         // Map<String, Object> requestMap = fc.getExternalContext().getRequestMap();\r
37         NavigationHandler nav = fc.getApplication().getNavigationHandler();\r
38         context.getContext().getPartialViewContext().setRenderAll(true);        \r
39         try {\r
40           nav.handleNavigation(fc, null, "search");\r
41           fc.renderResponse();\r
42         } finally {\r
43           i.remove();\r
44         }\r
45       }\r
46     }\r
47     getWrapped().handle();\r
48   }\r
49 }\r