[gatein-commits] gatein SVN: r2648 - in portal/trunk: web/portal/src/main/webapp/WEB-INF and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Apr 15 04:11:29 EDT 2010
Author: hoang_to
Date: 2010-04-15 04:11:28 -0400 (Thu, 15 Apr 2010)
New Revision: 2648
Added:
portal/trunk/component/web/src/main/java/org/exoplatform/web/application/RequestFailure.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/concurrent/
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/concurrent/PortalConcurrencyMonitorLifecycle.java
Modified:
portal/trunk/component/web/src/main/java/org/exoplatform/web/application/ApplicationLifecycle.java
portal/trunk/web/portal/src/main/webapp/WEB-INF/webui-configuration.xml
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/MonitorApplicationLifecycle.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationLifecycle.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalApplicationLifecycle.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalStatisticLifecycle.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortletStatisticLifecycle.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserProfileLifecycle.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserSiteLifeCycle.java
Log:
GTNPORTAL-558: Issue when editing resources concurrently
Modified: portal/trunk/component/web/src/main/java/org/exoplatform/web/application/ApplicationLifecycle.java
===================================================================
--- portal/trunk/component/web/src/main/java/org/exoplatform/web/application/ApplicationLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/component/web/src/main/java/org/exoplatform/web/application/ApplicationLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -32,8 +32,10 @@
public void onStartRequest(Application app, E context) throws Exception;
+ public void onFailRequest(Application app, E context, RequestFailure failureType) throws Exception;
+
public void onEndRequest(Application app, E context) throws Exception;
-
+
public void onDestroy(Application app) throws Exception;
}
Added: portal/trunk/component/web/src/main/java/org/exoplatform/web/application/RequestFailure.java
===================================================================
--- portal/trunk/component/web/src/main/java/org/exoplatform/web/application/RequestFailure.java (rev 0)
+++ portal/trunk/component/web/src/main/java/org/exoplatform/web/application/RequestFailure.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.web.application;
+
+/**
+ * @author <a href="mailto:hoang281283 at gmail.com">Minh Hoang TO</a>
+ * @version $Id$
+ *
+ */
+public enum RequestFailure {
+
+ IO_FAILURE, CONCURRENCY_FAILURE
+}
Modified: portal/trunk/web/portal/src/main/webapp/WEB-INF/webui-configuration.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/webui-configuration.xml 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/webui-configuration.xml 2010-04-15 08:11:28 UTC (rev 2648)
@@ -37,6 +37,7 @@
<listener>org.exoplatform.portal.application.PortalApplicationLifecycle</listener>
<listener>org.exoplatform.webui.application.MonitorApplicationLifecycle</listener>
<listener>org.exoplatform.portal.application.UserProfileLifecycle</listener>
+ <listener>org.exoplatform.portal.application.concurrent.PortalConcurrencyMonitorLifecycle</listener>
</application-lifecycle-listeners>
<events>
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/MonitorApplicationLifecycle.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/MonitorApplicationLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/MonitorApplicationLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -21,6 +21,7 @@
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.event.MonitorEvent;
/**
@@ -58,6 +59,12 @@
event.setStartExecutionTime(System.currentTimeMillis());
rcontext.setAttribute(MonitorEvent.PORTAL_EXECUTION_LIFECYCLE_EVENT, event);
}
+
+ @SuppressWarnings("unchecked")
+ public void onFailRequest(Application app, WebuiRequestContext rcontext, RequestFailure failureType) throws Exception
+ {
+
+ }
@SuppressWarnings("unchecked")
public void onEndRequest(Application app, WebuiRequestContext rcontext) throws Exception
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationLifecycle.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/application/portlet/PortletApplicationLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -21,6 +21,7 @@
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.application.WebuiRequestContext;
public class PortletApplicationLifecycle implements ApplicationLifecycle<WebuiRequestContext>
@@ -39,6 +40,12 @@
}
@SuppressWarnings("unused")
+ public void onFailRequest(Application app, WebuiRequestContext rcontext, RequestFailure failureType) throws Exception
+ {
+
+ }
+
+ @SuppressWarnings("unused")
public void onEndRequest(Application app, WebuiRequestContext context) throws Exception
{
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalApplicationLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalApplicationLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalApplicationLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -25,6 +25,7 @@
import org.exoplatform.container.SessionManagerContainer;
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.application.WebuiRequestContext;
public class PortalApplicationLifecycle implements ApplicationLifecycle<WebuiRequestContext>
@@ -42,6 +43,12 @@
SessionContainer.setInstance(((SessionManagerContainer)pcontainer).getSessionManager().getSessionContainer(
rcontext.getSessionId()));
}
+
+ @SuppressWarnings("unused")
+ public void onFailRequest(Application app, WebuiRequestContext rontext, RequestFailure failureType) throws Exception
+ {
+
+ }
@SuppressWarnings("unused")
public void onEndRequest(Application app, WebuiRequestContext rcontext) throws Exception
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -20,11 +20,13 @@
package org.exoplatform.portal.application;
import org.exoplatform.commons.utils.Safe;
+import org.exoplatform.portal.config.StaleModelException;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.web.WebAppController;
import org.exoplatform.web.WebRequestHandler;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.core.UIApplication;
@@ -114,10 +116,20 @@
// Store ui root
app.getStateManager().storeUIRootComponent(context);
}
- catch (Exception ex)
+ catch (StaleModelException staleModelEx)
{
- log.error("Error while handling request", ex);
+ // Minh Hoang TO:
+ //At the moment, this catch block is never reached, as the StaleModelException is intercepted temporarily
+ //in UI-related code
+ for(ApplicationLifecycle lifecycle : lifecycles)
+ {
+ lifecycle.onFailRequest(app, context, RequestFailure.CONCURRENCY_FAILURE);
+ }
}
+ catch (Exception NonStaleModelEx)
+ {
+ log.error("Error while handling request", NonStaleModelEx);
+ }
finally
{
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalStatisticLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalStatisticLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortalStatisticLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -22,6 +22,7 @@
import org.exoplatform.container.PortalContainer;
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.application.WebuiRequestContext;
public class PortalStatisticLifecycle implements ApplicationLifecycle<WebuiRequestContext>
@@ -41,6 +42,12 @@
}
@SuppressWarnings("unused")
+ public void onFailRequest(Application app, WebuiRequestContext rcontext, RequestFailure failureType) throws Exception
+ {
+
+ }
+
+ @SuppressWarnings("unused")
public void onEndRequest(Application app, WebuiRequestContext rcontext) throws Exception
{
PortalStatisticService service =
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortletStatisticLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortletStatisticLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/PortletStatisticLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -21,6 +21,7 @@
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.application.WebuiRequestContext;
public class PortletStatisticLifecycle implements ApplicationLifecycle<WebuiRequestContext>
@@ -41,6 +42,12 @@
}
@SuppressWarnings("unused")
+ public void onFailRequest(Application app, WebuiRequestContext context, RequestFailure failureType) throws Exception
+ {
+
+ }
+
+ @SuppressWarnings("unused")
public void onEndRequest(Application app, WebuiRequestContext context) throws Exception
{
ApplicationStatisticService service =
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserProfileLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserProfileLifecycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserProfileLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -24,6 +24,7 @@
import org.exoplatform.services.organization.UserProfile;
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.exoplatform.webui.application.WebuiRequestContext;
public class UserProfileLifecycle implements ApplicationLifecycle<WebuiRequestContext>
@@ -58,6 +59,12 @@
currentUserProfile.set(userProfile);
context.setAttribute(this.USER_PROFILE_ATTRIBUTE_NAME, userProfile);
}
+
+ @SuppressWarnings("unused")
+ public void onFailRequest(Application app, WebuiRequestContext context, RequestFailure failureType) throws Exception
+ {
+
+ }
@SuppressWarnings("unused")
public void onEndRequest(Application app, WebuiRequestContext context) throws Exception
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserSiteLifeCycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserSiteLifeCycle.java 2010-04-15 06:28:24 UTC (rev 2647)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/UserSiteLifeCycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -25,6 +25,7 @@
import org.exoplatform.portal.config.model.PortalConfig;
import org.exoplatform.web.application.Application;
import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.RequestFailure;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
@@ -59,6 +60,10 @@
}
}
}
+
+ public void onFailRequest(Application app, PortalRequestContext context, RequestFailure failureType) throws Exception
+ {
+ }
public void onEndRequest(Application app, PortalRequestContext context) throws Exception
{
Added: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/concurrent/PortalConcurrencyMonitorLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/concurrent/PortalConcurrencyMonitorLifecycle.java (rev 0)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/concurrent/PortalConcurrencyMonitorLifecycle.java 2010-04-15 08:11:28 UTC (rev 2648)
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.application.concurrent;
+
+import org.exoplatform.portal.application.PortalRequestContext;
+import org.exoplatform.portal.config.DataStorage;
+import org.exoplatform.portal.config.UserPortalConfig;
+import org.exoplatform.portal.config.model.PortalConfig;
+import org.exoplatform.portal.webui.page.UISiteBody;
+import org.exoplatform.portal.webui.portal.PageNodeEvent;
+import org.exoplatform.portal.webui.portal.UIPortal;
+import org.exoplatform.portal.webui.util.PortalDataMapper;
+import org.exoplatform.portal.webui.util.Util;
+import org.exoplatform.portal.webui.workspace.UIEditInlineWorkspace;
+import org.exoplatform.portal.webui.workspace.UIPortalApplication;
+import org.exoplatform.portal.webui.workspace.UIWorkingWorkspace;
+import org.exoplatform.web.application.Application;
+import org.exoplatform.web.application.ApplicationLifecycle;
+import org.exoplatform.web.application.JavascriptManager;
+import org.exoplatform.web.application.RequestFailure;
+import org.exoplatform.webui.event.Event;
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
+
+/**
+ * @author <a href="mailto:hoang281283 at gmail.com">Minh Hoang TO</a>
+ * @version $Id$
+ *
+ */
+public class PortalConcurrencyMonitorLifecycle implements ApplicationLifecycle<PortalRequestContext>
+{
+
+ private final Logger log = LoggerFactory.getLogger(PortalConcurrencyMonitorLifecycle.class);
+
+ /**
+ * @see org.exoplatform.web.application.ApplicationLifecycle#onDestroy(org.exoplatform.web.application.Application)
+ */
+ public void onDestroy(Application app) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * @see org.exoplatform.web.application.ApplicationLifecycle#onEndRequest(org.exoplatform.web.application.Application, org.exoplatform.web.application.RequestContext)
+ */
+ public void onEndRequest(Application app, PortalRequestContext context) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * @see org.exoplatform.web.application.ApplicationLifecycle#onFailRequest(org.exoplatform.web.application.Application, org.exoplatform.web.application.RequestContext, org.exoplatform.web.application.RequestFailure)
+ */
+ public void onFailRequest(Application app, PortalRequestContext context, RequestFailure failureType) throws Exception
+ {
+ if(failureType == RequestFailure.CONCURRENCY_FAILURE)
+ {
+ //Concurrency-related handling should be put here in the future
+ log.error("Error in editing resources concurrently: " + context.getRequestURI().toString());
+ }
+ }
+
+ /**
+ * @see org.exoplatform.web.application.ApplicationLifecycle#onInit(org.exoplatform.web.application.Application)
+ */
+ public void onInit(Application app) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * @see org.exoplatform.web.application.ApplicationLifecycle#onStartRequest(org.exoplatform.web.application.Application, org.exoplatform.web.application.RequestContext)
+ */
+ public void onStartRequest(Application app, PortalRequestContext context) throws Exception
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+}
More information about the gatein-commits
mailing list