Author: hoang_to
Date: 2010-02-11 00:03:51 -0500 (Thu, 11 Feb 2010)
New Revision: 1627
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/model/SiteConfig.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java
Log:
GTNPORTAL-620: Exception while browse to a node with deleted page
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/model/SiteConfig.java
===================================================================
---
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/model/SiteConfig.java 2010-02-11
04:46:43 UTC (rev 1626)
+++
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/model/SiteConfig.java 2010-02-11
05:03:51 UTC (rev 1627)
@@ -11,18 +11,29 @@
public class SiteConfig extends ModelObject
{
+ final public static String USER_TYPE = "user";
+
+ final public static String GROUP_TYPE = "group";
+
+ final public static String PORTAL_TYPE = "portal";
+
private String ownerType;
private String ownerId;
- private Container layout;
-
private PageNavigation navigation;
+ /** Access permissions on UI */
private String[] accessPermissions;
+ /** Edit permissions on UI */
private String editPermission;
+ /** Layout of the site */
+ private Container siteLayout;
+
+ private String siteSkin;
+
public SiteConfig(String _ownerType, String _ownerId, String storageId)
{
super(storageId);
@@ -37,4 +48,23 @@
return null;
}
+ public void setSiteLayout(Container _siteLayout)
+ {
+ this.siteLayout = _siteLayout;
+ }
+
+ public Container getSiteLayout()
+ {
+ return this.siteLayout;
+ }
+
+ public String getSiteSkin()
+ {
+ return this.siteSkin;
+ }
+
+ public void setSiteSkin(String _siteSkin)
+ {
+ this.siteSkin = _siteSkin;
+ }
}
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java
===================================================================
---
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java 2010-02-11
04:46:43 UTC (rev 1626)
+++
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java 2010-02-11
05:03:51 UTC (rev 1627)
@@ -103,7 +103,16 @@
uiPortal.setMaximizedUIComponent(null);
- uiPage = getUIPage(pageReference, page, uiPortal, context);
+ try
+ {
+ uiPage = getUIPage(pageReference, page, uiPortal, context);
+ }
+ catch (Exception ex)
+ {
+ // TODO: Print evokable message
+ setUIComponent(null);
+ return;
+ }
if (uiPage.isShowMaxWindow())
{
@@ -136,17 +145,20 @@
private UIPage getUIPage(String pageReference, Page page, UIPortal uiPortal,
WebuiRequestContext context)
throws Exception
{
+ //The page has been deleted
+ if(page == null)
+ {
+ //Clear the UIPage from cache in UIPortal
+ uiPortal.clearUIPage(pageReference);
+ throw new Exception("The page with id " + pageReference + " has
been removed");
+ }
+
UIPage uiPage = uiPortal.getUIPage(pageReference);
if (uiPage != null)
{
return uiPage;
}
- if(page == null)
- {
- return null;
- }
-
if (Page.DESKTOP_PAGE.equals(page.getFactoryId()))
{
uiPage = createUIComponent(context, UIDesktopPage.class, null, null);
@@ -173,6 +185,8 @@
maximizedUIComponent.processRender((WebuiRequestContext)WebuiRequestContext.getCurrentInstance());
return;
}
+
+ //TODO: Remove beneath block
if (uicomponent_ == null)
{
setPageBody(Util.getUIPortal().getSelectedNode(), Util.getUIPortal());
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java
===================================================================
---
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java 2010-02-11
04:46:43 UTC (rev 1626)
+++
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java 2010-02-11
05:03:51 UTC (rev 1627)
@@ -277,7 +277,11 @@
int currentPage = datasource.getCurrentPage();
dataService.remove(page);
-
+ //Minh Hoang TO: The cached UIPage objects corresponding to removed Page should
be removed here.
+ //As we have multiple UIPortal, which means multiple caches of UIPage. It 's
unwise to garbage
+ // all UIPage caches at once. Better solution is to clear UIPage on browsing to
PageNode having Page
+ //removed
+
UIPortal uiPortal = Util.getUIPortal();
if (uiPortal.getSelectedNode().getPageReference().equals(page.getPageId()))
{
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java
===================================================================
---
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java 2010-02-11
04:46:43 UTC (rev 1626)
+++
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java 2010-02-11
05:03:51 UTC (rev 1627)
@@ -219,6 +219,11 @@
this.all_UIPages.put(pageReference, uiPage);
}
+ public void clearUIPage(String pageReference)
+ {
+ this.all_UIPages.remove(pageReference);
+ }
+
public void setNavigation(PageNavigation _navigation)
{
this.navigation = _navigation;
Show replies by date