[Bedework-commit] webapps r755 - in trunk: webclient/war/WEB-INF
webcommon/src/org/bedework/webcommon
svnadmin at bedework.org
svnadmin at bedework.org
Tue May 13 15:33:52 EDT 2008
Author: douglm
Date: 2008-05-13 15:33:50 -0400 (Tue, 13 May 2008)
New Revision: 755
Modified:
trunk/webclient/war/WEB-INF/struts-config.xml
trunk/webcommon/src/org/bedework/webcommon/BwAbstractAction.java
trunk/webcommon/src/org/bedework/webcommon/BwCallback.java
trunk/webcommon/src/org/bedework/webcommon/BwSvciFilter.java
Log:
Fix struts-config so scheduling (at least oartiually) works again.
Also try to trap and report late exceptions.
Modified: trunk/webclient/war/WEB-INF/struts-config.xml
===================================================================
--- trunk/webclient/war/WEB-INF/struts-config.xml 2008-05-13 19:33:01 UTC (rev 754)
+++ trunk/webclient/war/WEB-INF/struts-config.xml 2008-05-13 19:33:50 UTC (rev 755)
@@ -461,7 +461,7 @@
type="org.bedework.webcommon.RenderAction"
name="calForm"
scope="session"
- parameter="actionType=render;conversation=start"
+ parameter="actionType=render;conversation=only"
validate="false">
<forward name="success" path="/docs/schedule/inbox.jsp" />
</action>
@@ -474,7 +474,7 @@
type="org.bedework.webcommon.event.DeleteEventAction"
name="calForm"
scope="session"
- parameter="actionType=action;conversation=end"
+ parameter="actionType=action;conversation=only"
validate="false">
<forward name="success" path="/schedule/showInbox.rdo" redirect="true" />
</action>
@@ -526,7 +526,7 @@
type="org.bedework.webcommon.event.EventKeyAction"
name="calForm"
scope="session"
- parameter="actionType=action;conversation=continue"
+ parameter="actionType=action;conversation=start"
validate="false">
<forward name="noAction" path="/main/showMain.rdo" redirect="true" />
<forward name="success" path="/schedule/showAttendeeRespond.rdo" redirect="true" />
Modified: trunk/webcommon/src/org/bedework/webcommon/BwAbstractAction.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/BwAbstractAction.java 2008-05-13 19:33:01 UTC (rev 754)
+++ trunk/webcommon/src/org/bedework/webcommon/BwAbstractAction.java 2008-05-13 19:33:50 UTC (rev 755)
@@ -131,7 +131,10 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;
+import org.apache.struts.util.RequestUtils;
/** This abstract action performs common setup actions before the real
* action method is called.
@@ -1991,9 +1994,14 @@
BwActionFormBase form;
Request req;
+ ActionForward errorForward;
- Callback(BwActionFormBase form) {
+ Callback(BwActionFormBase form, ActionMapping mapping) {
this.form = form;
+ errorForward = mapping.findForward("error");
+ if (errorForward == null) {
+ throw new RuntimeException("Forward \"error\" must be defined in struts-comfig");
+ }
}
/* (non-Javadoc)
@@ -2101,6 +2109,39 @@
}
}
+ /* (non-Javadoc)
+ * @see org.bedework.webcommon.BwCallback#error(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Throwable)
+ */
+ public void error(HttpServletRequest hreq,
+ HttpServletResponse hresp,
+ Throwable t) throws Throwable {
+ form.getErr().emit(t);
+
+ /* Redirect to an error action
+ */
+
+ String forwardPath = errorForward.getPath();
+ String uri = null;
+
+ // paths not starting with / should be passed through without any processing
+ // (ie. they're absolute)
+ if (forwardPath.startsWith("/")) {
+ uri = RequestUtils.forwardURL(hreq, errorForward, null); // get module relative uri
+ } else {
+ uri = forwardPath;
+ }
+
+ // only prepend context path for relative uri
+ if (uri.startsWith("/")) {
+ uri = hreq.getContextPath() + uri;
+ }
+ try {
+ hresp.sendRedirect(hresp.encodeRedirectURL(uri));
+ } catch (Throwable t1) {
+ // Presumably illegal state
+ }
+ }
+
void closeNow() throws Throwable {
Throwable t = null;
@@ -2474,7 +2515,7 @@
/* create a call back object so the filter can open the service
interface */
- cb = new Callback(form);
+ cb = new Callback(form, request.getMapping());
hsess.setAttribute(BwCallback.cbAttrName, cb);
}
Modified: trunk/webcommon/src/org/bedework/webcommon/BwCallback.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/BwCallback.java 2008-05-13 19:33:01 UTC (rev 754)
+++ trunk/webcommon/src/org/bedework/webcommon/BwCallback.java 2008-05-13 19:33:50 UTC (rev 755)
@@ -27,6 +27,9 @@
import java.io.Serializable;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
/** Abstract class an instance of which is used to signal open and close
* events to the web application.
*
@@ -53,6 +56,17 @@
*/
public abstract void out() throws Throwable;
+ /** Flag an error
+ *
+ * @param hreq
+ * @param hresp
+ * @param t
+ * @throws Throwable
+ */
+ public abstract void error(HttpServletRequest hreq,
+ HttpServletResponse hresp,
+ Throwable t) throws Throwable;
+
/** Called after the above to allow close etc.
*
* @throws Throwable
Modified: trunk/webcommon/src/org/bedework/webcommon/BwSvciFilter.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/BwSvciFilter.java 2008-05-13 19:33:01 UTC (rev 754)
+++ trunk/webcommon/src/org/bedework/webcommon/BwSvciFilter.java 2008-05-13 19:33:50 UTC (rev 755)
@@ -129,7 +129,12 @@
}
} catch (Throwable t) {
getLogger().error("Callback exception: ", t);
- throw new ServletException(t);
+ try {
+ cb.error(hreq, hresp, t);
+ } catch (Throwable t1) {
+ getLogger().error("Callback exception: ", t1);
+ throw new ServletException(t);
+ }
} finally {
try {
cb = getCb(sess, "close");
More information about the Bedework-commit
mailing list