You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/04/12 23:16:09 UTC
svn commit: r161122 - lenya/trunk/src/webapp/lenya/usecases/usecases.js
Author: andreas
Date: Tue Apr 12 14:16:09 2005
New Revision: 161122
URL: http://svn.apache.org/viewcvs?view=rev&rev=161122
Log:
usecases.js: allow usecase to rollback the transition if an exception was thrown in the flowscript
Modified:
lenya/trunk/src/webapp/lenya/usecases/usecases.js
Modified: lenya/trunk/src/webapp/lenya/usecases/usecases.js
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/usecases/usecases.js?view=diff&r1=161121&r2=161122
==============================================================================
--- lenya/trunk/src/webapp/lenya/usecases/usecases.js (original)
+++ lenya/trunk/src/webapp/lenya/usecases/usecases.js Tue Apr 12 14:16:09 2005
@@ -117,16 +117,33 @@
var ready = false;
while (!ready) {
- var viewUri = "view/" + menu + "/" + view.getTemplateURI();
- if (cocoon.log.isDebugEnabled())
- cocoon.log.debug("usecases.js::executeUsecase() in usecase " + usecaseName + ", creating view, calling Cocoon with viewUri = [" + viewUri + "]");
+ try {
+ var viewUri = "view/" + menu + "/" + view.getTemplateURI();
+ if (cocoon.log.isDebugEnabled())
+ cocoon.log.debug("usecases.js::executeUsecase() in usecase " + usecaseName + ", creating view, calling Cocoon with viewUri = [" + viewUri + "]");
- cocoon.sendPageAndWait(viewUri, {
- "usecase" : proxy
- });
+ cocoon.sendPageAndWait(viewUri, {
+ "usecase" : proxy
+ });
+ }
+ catch (exception) {
+ /* if an exception was thrown by the view, allow the usecase to rollback the transition */
+ try {
+ usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
+ usecase = usecaseResolver.resolve(usecaseName);
+ proxy.setup(usecase);
+ usecase.cancel();
+ throw exception;
+ }
+ finally {
+ usecaseResolver.release(usecase);
+ usecase = undefined;
+ cocoon.releaseComponent(usecaseResolver);
+ }
+ }
if (cocoon.log.isDebugEnabled())
- cocoon.log.debug("usecases.js::executeUsecase() in usecase " + usecaseName + ", after view, now advancing in usecase");
+ cocoon.log.debug("usecases.js::executeUsecase() in usecase " + usecaseName + ", after view, now advancing in usecase");
try {
usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
@@ -156,6 +173,11 @@
proxy = new Packages.org.apache.lenya.cms.usecase.UsecaseProxy(usecase);
targetUrl = usecase.getTargetURL(success);
}
+ catch (exception) {
+ /* allow usecase to rollback the transition */
+ usecase.cancel();
+ throw exception;
+ }
finally {
usecaseResolver.release(usecase);
usecase = undefined;
@@ -177,6 +199,11 @@
}
}
targetUrl = usecase.getTargetURL(success);
+ }
+ catch (exception) {
+ /* allow usecase to rollback the transition */
+ usecase.cancel();
+ throw exception;
}
finally {
usecaseResolver.release(usecase);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org