From b7d8f0964c8f850c0595ef5deab4ce095e3e2c3d Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Tue, 1 Dec 2009 08:50:44 +0000 Subject: [PATCH] transactionStart/End and requestStart/End should now always happen in pairs svn changeset:10114/svn branch:6.2 --- .../server/AbstractApplicationPortlet.java | 19 +++++++++++++------ .../server/AbstractApplicationServlet.java | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 3d165c2d2e..5c1396b449 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -313,6 +313,9 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet (ResourceResponse) response); } else { Application application = null; + boolean transactionStarted = false; + boolean requestStarted = false; + try { // TODO What about PARAM_UNLOADBURST & redirectToApplication?? @@ -359,6 +362,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet if (application instanceof PortletRequestListener) { ((PortletRequestListener) application).onRequestStart( request, response); + requestStarted = true; } /* Start the newly created application */ @@ -369,6 +373,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet * end is called in the finally block below. */ applicationContext.startTransaction(application, request); + transactionStarted = true; /* Notify listeners */ @@ -460,15 +465,17 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet handleServiceException(request, response, application, e); } finally { // Notifies transaction end - if (application != null) { - ((PortletApplicationContext2) application.getContext()) - .endTransaction(application, request); - - if (application instanceof PortletRequestListener) { + try { + if (transactionStarted) { + ((PortletApplicationContext2) application.getContext()) + .endTransaction(application, request); + } + } finally { + if (requestStarted) { ((PortletRequestListener) application).onRequestEnd( request, response); - } + } } } } diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java index fc64ede5bd..65b587183b 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java @@ -369,6 +369,8 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements } Application application = null; + boolean transactionStarted = false; + boolean requestStarted = false; try { // If a duplicate "close application" URL is received for an @@ -414,6 +416,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements if (application instanceof HttpServletRequestListener) { ((HttpServletRequestListener) application).onRequestStart( request, response); + requestStarted = true; } // Start the newly created application @@ -424,6 +427,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * is called in the finally block below. */ webApplicationContext.startTransaction(application, request); + transactionStarted = true; /* Handle the request */ if (requestType == RequestType.FILE_UPLOAD) { @@ -480,14 +484,19 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements handleServiceException(request, response, application, e); } finally { // Notifies transaction end - if (application != null) { - ((WebApplicationContext) application.getContext()) - .endTransaction(application, request); + try { + if (transactionStarted) { + ((WebApplicationContext) application.getContext()) + .endTransaction(application, request); - if (application instanceof HttpServletRequestListener) { + } + + } finally { + if (requestStarted) { ((HttpServletRequestListener) application).onRequestEnd( request, response); } + } } -- 2.39.5