1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.apache.struts2.impl;
24
25 import static org.apache.struts2.impl.RequestContextImpl.ILLEGAL_PROCEED;
26
27 import java.util.concurrent.Callable;
28
29 import com.opensymphony.xwork2.ActionInvocation;
30 import com.opensymphony.xwork2.interceptor.Interceptor;
31
32 public class InterceptorAdapter implements Interceptor {
33
34 private static final long serialVersionUID = 8020658947818231684L;
35 final org.apache.struts2.spi.Interceptor delegate;
36
37 public InterceptorAdapter(org.apache.struts2.spi.Interceptor delegate) {
38 this.delegate = delegate;
39 }
40
41 public String intercept(final ActionInvocation invocation) throws Exception {
42 final RequestContextImpl requestContext = RequestContextImpl.get();
43
44
45 Callable<String> previous = requestContext.getProceed();
46
47 requestContext.setProceed(new Callable<String>() {
48 public String call() throws Exception {
49
50 requestContext.setProceed(ILLEGAL_PROCEED);
51 try {
52 return invocation.invoke();
53 } finally {
54
55 requestContext.setProceed(this);
56 }
57 }
58 });
59
60 try {
61 return delegate.intercept(requestContext);
62 } finally {
63 requestContext.setProceed(previous);
64 }
65 }
66
67 public void destroy() {}
68 public void init() {}
69 }