1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.example.demo.info;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 import javax.enterprise.inject.spi.CDI;
26 import javax.faces.context.FacesContext;
27 import javax.faces.event.PhaseEvent;
28 import javax.faces.event.PhaseId;
29 import javax.faces.event.PhaseListener;
30 import javax.inject.Inject;
31 import javax.servlet.http.HttpSession;
32 import java.lang.invoke.MethodHandles;
33
34
35 public class ActivityPhaseListener implements PhaseListener {
36
37 private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
38
39 @Inject
40 private ActivityList activityList;
41
42 @Override
43 public void beforePhase(final PhaseEvent event) {
44
45 if (activityList == null) {
46 LOG.warn("The activityList was not set by CDI");
47 activityList = CDI.current().select(ActivityList.class).get();
48 }
49
50 final FacesContext facesContext = event.getFacesContext();
51 final String sessionId = ((HttpSession) facesContext.getExternalContext().getSession(true)).getId();
52
53 if (facesContext.getPartialViewContext().isAjaxRequest()) {
54 LOG.debug("ajax for sessionId='{}'", sessionId);
55 activityList.executeAjaxRequest(sessionId);
56 } else {
57 LOG.debug("full for sessionId='{}'", sessionId);
58 activityList.executeJsfRequest(sessionId);
59 }
60 }
61
62 @Override
63 public void afterPhase(final PhaseEvent event) {
64 }
65
66 @Override
67 public PhaseId getPhaseId() {
68 return PhaseId.RENDER_RESPONSE;
69 }
70 }