1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.routemanager;
17
18 import java.util.List;
19
20 import org.kuali.rice.kew.api.action.ActionType;
21 import org.kuali.rice.kew.framework.postprocessor.ActionTakenEvent;
22 import org.kuali.rice.kew.framework.postprocessor.AfterProcessEvent;
23 import org.kuali.rice.kew.framework.postprocessor.BeforeProcessEvent;
24 import org.kuali.rice.kew.framework.postprocessor.DeleteEvent;
25 import org.kuali.rice.kew.framework.postprocessor.DocumentLockingEvent;
26 import org.kuali.rice.kew.framework.postprocessor.DocumentRouteLevelChange;
27 import org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange;
28 import org.kuali.rice.kew.framework.postprocessor.PostProcessor;
29 import org.kuali.rice.kew.framework.postprocessor.ProcessDocReport;
30 import org.kuali.rice.kew.api.KewApiConstants;
31
32
33 public class ExceptionRoutingTestPostProcessor implements PostProcessor {
34
35 public static boolean THROW_ROUTE_STATUS_CHANGE_EXCEPTION;
36 public static boolean THROW_ROUTE_STATUS_LEVEL_EXCEPTION;
37 public static boolean THROW_ROUTE_DELETE_ROUTE_HEADER_EXCEPTION;
38 public static boolean THROW_DO_ACTION_TAKEN_EXCEPTION;
39 public static boolean THROW_BEFORE_PROCESS_EXCEPTION;
40 public static boolean THROW_AFTER_PROCESS_EXCEPTION;
41 public static boolean THROW_DOCUMENT_LOCKING_EXCEPTION;
42 public static boolean TRANSITIONED_OUT_OF_EXCEPTION_ROUTING = false;
43 public static boolean BLOW_UP_ON_TRANSITION_INTO_EXCEPTION = false;
44
45 public ProcessDocReport doRouteStatusChange(DocumentRouteStatusChange statusChangeEvent) throws Exception {
46
47
48
49 boolean transitioningIntoException = !KewApiConstants.ROUTE_HEADER_EXCEPTION_CD.equals(statusChangeEvent.getOldRouteStatus()) &&
50 KewApiConstants.ROUTE_HEADER_EXCEPTION_CD.equals(statusChangeEvent.getNewRouteStatus());
51 if (THROW_ROUTE_STATUS_CHANGE_EXCEPTION && !transitioningIntoException) {
52 throw new RuntimeException("I am the doRouteStatusChange exploder");
53 }
54 if (BLOW_UP_ON_TRANSITION_INTO_EXCEPTION && transitioningIntoException) {
55 throw new RuntimeException("Throwing an exception when transitioning into exception status.");
56 }
57 if (KewApiConstants.ROUTE_HEADER_EXCEPTION_CD.equals(statusChangeEvent.getOldRouteStatus())) {
58 TRANSITIONED_OUT_OF_EXCEPTION_ROUTING = true;
59 }
60 return new ProcessDocReport(true, "");
61 }
62
63 public ProcessDocReport doRouteLevelChange(DocumentRouteLevelChange levelChangeEvent) throws Exception {
64 if (THROW_ROUTE_STATUS_LEVEL_EXCEPTION) {
65 throw new RuntimeException("I am the doRouteLevelChange exploder");
66 }
67 return new ProcessDocReport(true, "");
68 }
69
70 public ProcessDocReport doDeleteRouteHeader(DeleteEvent event) throws Exception {
71 if (THROW_ROUTE_DELETE_ROUTE_HEADER_EXCEPTION) {
72 throw new RuntimeException("I am the doDeleteRouteHeader exploder");
73 }
74 return new ProcessDocReport(true, "");
75 }
76
77 public ProcessDocReport doActionTaken(ActionTakenEvent event) throws Exception {
78 if (THROW_DO_ACTION_TAKEN_EXCEPTION) {
79 throw new RuntimeException("I am the doActionTaken exploder");
80 }
81 return new ProcessDocReport(true, "");
82 }
83
84 public ProcessDocReport afterActionTaken(ActionType performed, ActionTakenEvent event) throws Exception {
85 if (THROW_DO_ACTION_TAKEN_EXCEPTION) {
86 throw new RuntimeException("I am the afterActionTaken exploder");
87 }
88 return new ProcessDocReport(true, "");
89 }
90
91 public ProcessDocReport beforeProcess(BeforeProcessEvent event) throws Exception {
92 if (THROW_BEFORE_PROCESS_EXCEPTION) {
93 throw new RuntimeException("I am the beforeProcess exploder");
94 }
95 return new ProcessDocReport(true, "");
96 }
97
98 public ProcessDocReport afterProcess(AfterProcessEvent event) throws Exception {
99 if (THROW_AFTER_PROCESS_EXCEPTION) {
100 throw new RuntimeException("I am the afterProcess exploder");
101 }
102 return new ProcessDocReport(true, "");
103 }
104
105 public List<String> getDocumentIdsToLock(DocumentLockingEvent lockingEvent)
106 throws Exception {
107 if (THROW_DOCUMENT_LOCKING_EXCEPTION) {
108 throw new RuntimeException("I am the getDocumentIdsToLock exploder");
109 }
110 return null;
111 }
112
113
114
115 }