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.struts.webapp.example;
24
25
26 import java.lang.reflect.InvocationTargetException;
27
28 import jakarta.servlet.ServletException;
29 import jakarta.servlet.http.HttpServletRequest;
30 import jakarta.servlet.http.HttpServletResponse;
31 import jakarta.servlet.http.HttpSession;
32
33 import org.apache.commons.beanutils.PropertyUtils;
34 import org.apache.struts.action.Action;
35 import org.apache.struts.action.ActionForm;
36 import org.apache.struts.action.ActionForward;
37 import org.apache.struts.action.ActionMapping;
38 import org.apache.struts.apps.mailreader.dao.Subscription;
39 import org.apache.struts.apps.mailreader.dao.User;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42
43
44
45
46
47
48
49
50
51
52 public final class EditSubscriptionAction extends Action {
53 private static final long serialVersionUID = -205590678807295830L;
54
55
56
57
58
59
60
61
62 private final static Logger LOG =
63 LoggerFactory.getLogger(EditSubscriptionAction.class);
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 public ActionForward execute(ActionMapping mapping,
85 ActionForm form,
86 HttpServletRequest request,
87 HttpServletResponse response)
88 throws Exception {
89
90
91 HttpSession session = request.getSession();
92 String action = request.getParameter("action");
93 if (action == null) {
94 action = "Create";
95 }
96 String host = request.getParameter("host");
97 LOG.debug("EditSubscriptionAction: Processing {} action",
98 action);
99
100
101 User user = (User) session.getAttribute(Constants.USER_KEY);
102 if (user == null) {
103 LOG.trace(" User is not logged on in session {}",
104 session.getId());
105 return (mapping.findForward("logon"));
106 }
107
108
109 Subscription subscription =
110 user.findSubscription(request.getParameter("host"));
111 if ((subscription == null) && !action.equals("Create")) {
112 LOG.trace(" No subscription for user {} and host {}",
113 user.getUsername(), host);
114 return (mapping.findForward("failure"));
115 }
116 if (subscription != null) {
117 session.setAttribute(Constants.SUBSCRIPTION_KEY, subscription);
118 }
119
120
121 if (form == null) {
122 LOG.trace(" Creating new SubscriptionForm bean under key {}",
123 mapping.getAttribute());
124 form = new SubscriptionForm();
125 if ("request".equals(mapping.getScope())) {
126 request.setAttribute(mapping.getAttribute(), form);
127 } else {
128 session.setAttribute(mapping.getAttribute(), form);
129 }
130 }
131 SubscriptionForm subform = (SubscriptionForm) form;
132 subform.setAction(action);
133 if (!action.equals("Create")) {
134 LOG.trace(" Populating form from {}", subscription);
135 try {
136 PropertyUtils.copyProperties(subform, subscription);
137 subform.setAction(action);
138 } catch (InvocationTargetException e) {
139 Throwable t = e.getTargetException();
140 if (t == null)
141 t = e;
142 LOG.error("SubscriptionForm.populate", t);
143 throw new ServletException("SubscriptionForm.populate", t);
144 } catch (Throwable t) {
145 LOG.error("SubscriptionForm.populate", t);
146 throw new ServletException("SubscriptionForm.populate", t);
147 }
148 }
149
150
151 LOG.trace(" Forwarding to 'success' page");
152 return (mapping.findForward("success"));
153
154 }
155 }