Author: phuong_vu
Date: 2011-04-15 03:47:48 -0400 (Fri, 15 Apr 2011)
New Revision: 6232
Added:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/BaseUIPageFactory.java
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageFactory.java
portal/branches/decoupled-webos/webui/portal/src/main/resources/
portal/branches/decoupled-webos/webui/portal/src/main/resources/META-INF/
portal/branches/decoupled-webos/webui/portal/src/main/resources/META-INF/services/
portal/branches/decoupled-webos/webui/portal/src/main/resources/META-INF/services/org.exoplatform.portal.webui.page.UIPageFactory
Modified:
portal/branches/decoupled-webos/pom.xml
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPage.java
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageCreationWizard.java
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/util/Util.java
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIMainActionListener.java
Log:
GTNPORTAL-1862 Introduce UIPageFactory for loading all Page types
Modified: portal/branches/decoupled-webos/pom.xml
===================================================================
--- portal/branches/decoupled-webos/pom.xml 2011-04-15 07:43:51 UTC (rev 6231)
+++ portal/branches/decoupled-webos/pom.xml 2011-04-15 07:47:48 UTC (rev 6232)
@@ -962,6 +962,12 @@
<include>**/*.xsd</include>
</includes>
</resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ <includes>
+ <include>**/*.*</include>
+ </includes>
+ </resource>
</resources>
<testResources>
<testResource>
Added:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/BaseUIPageFactory.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/BaseUIPageFactory.java
(rev 0)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/BaseUIPageFactory.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -0,0 +1,50 @@
+/**
+ * Copyright (C) 2009 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.webui.page;
+
+import org.exoplatform.webui.application.WebuiApplication;
+import org.exoplatform.webui.application.WebuiRequestContext;
+
+/**
+ * This factory is used to create the base UIPage component
+ *
+ * @author <a href="trongtt(a)gmail.com">Trong Tran</a>
+ * @version $Revision$
+ */
+public class BaseUIPageFactory extends UIPageFactory
+{
+ @Override
+ public String getType()
+ {
+ return DEFAULT_FACTORY_ID;
+ }
+
+ @Override
+ public UIPage createUIPage(WebuiRequestContext context) throws Exception
+ {
+ if (context == null)
+ {
+ context = WebuiRequestContext.getCurrentInstance();
+ }
+ WebuiApplication app = (WebuiApplication)context.getApplication();
+ UIPage uiPage = app.createUIComponent(UIPage.class, null, null, context);
+ return uiPage;
+ }
+}
\ No newline at end of file
Modified:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPage.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPage.java 2011-04-15
07:43:51 UTC (rev 6231)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPage.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -24,8 +24,8 @@
import org.exoplatform.portal.config.model.Page;
import org.exoplatform.portal.webui.application.UIPortlet;
import org.exoplatform.portal.webui.container.UIContainer;
-import org.exoplatform.portal.webui.portal.UIPortalComposer;
import
org.exoplatform.portal.webui.portal.UIPortalComponentActionListener.MoveChildActionListener;
+import org.exoplatform.portal.webui.portal.UIPortalComposer;
import org.exoplatform.portal.webui.util.PortalDataMapper;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.portal.webui.workspace.UIEditInlineWorkspace;
@@ -38,8 +38,6 @@
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
-import java.util.HashMap;
-import java.util.Map;
/**
* May 19, 2006
@@ -61,28 +59,8 @@
private UIPortlet maximizedUIPortlet;
- protected static Map<String, Class<? extends UIPage>> realClass;
-
public static String DEFAULT_FACTORY_ID = "Default";
- static
- {
- if (realClass == null)
- {
- realClass = new HashMap<String, Class<? extends UIPage>>();
- realClass.put(DEFAULT_FACTORY_ID, UIPage.class);
- }
- }
-
- public static Class<? extends UIPage> getRealClass(String factoryID)
- {
- if (factoryID == null || factoryID.trim().equals("") ||
factoryID.trim().equals(DEFAULT_FACTORY_ID))
- {
- return UIPage.class;
- }
- return realClass.get(factoryID);
- }
-
public String getOwnerId()
{
return ownerId;
@@ -193,7 +171,7 @@
prContext.addUIComponentToUpdateByAjax(uiWorkingWS);
prContext.setFullRender(true);
}
-
+
public static class EditCurrentPageActionListener extends EventListener<UIPage>
{
@Override
Modified:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java 2011-04-15
07:43:51 UTC (rev 6231)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBody.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -28,8 +28,6 @@
import org.exoplatform.portal.webui.portal.UIPortalComponent;
import org.exoplatform.portal.webui.util.PortalDataMapper;
import org.exoplatform.portal.webui.util.Util;
-import org.exoplatform.portal.webui.workspace.UIPortalApplication;
-import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIComponent;
@@ -46,7 +44,6 @@
private String storageId;
- @SuppressWarnings("unused")
public UIPageBody(PageBody model) throws Exception
{
setId("UIPageBody");
@@ -67,7 +64,6 @@
setId("UIPageBody");
}
- @SuppressWarnings("unused")
public void init(PageBody model) throws Exception
{
setId("UIPageBody");
@@ -146,8 +142,8 @@
return uiPage;
}
- Class<? extends UIPage> clazz = UIPage.getRealClass(page.getFactoryId());
- uiPage = createUIComponent(context, clazz, null, null);
+ UIPageFactory clazz = UIPageFactory.getInstance(page.getFactoryId());
+ uiPage = clazz.createUIPage(context);
PortalDataMapper.toUIPage(uiPage, page);
uiPortal.setUIPage(page.getId(), uiPage);
Modified:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java 2011-04-15
07:43:51 UTC (rev 6231)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -412,8 +412,9 @@
}
//Need this code to override editpage action in extension project
- Class<? extends UIPage> clazz = UIPage.getRealClass(page.getFactoryId());
- clazz.getConstructor().newInstance().switchToEditMode(page);
+ UIPageFactory clazz = UIPageFactory.getInstance(page.getFactoryId());
+ UIPage uipage = clazz.createUIPage(null);
+ uipage.switchToEditMode(page);
}
}
Modified:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageCreationWizard.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageCreationWizard.java 2011-04-15
07:43:51 UTC (rev 6231)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageCreationWizard.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -343,8 +343,8 @@
UIPagePreview uiPagePreview = uiWizard.getChild(UIPagePreview.class);
- Class<? extends UIPage> clazz = UIPage.getRealClass(page.getFactoryId());
- UIPage uiPage = uiWizard.createUIComponent(context, clazz, null, null);
+ UIPageFactory clazz = UIPageFactory.getInstance(page.getFactoryId());
+ UIPage uiPage = clazz.createUIPage(context);
PortalDataMapper.toUIPage(uiPage, page);
uiPagePreview.setUIComponent(uiPage);
Added:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageFactory.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageFactory.java
(rev 0)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageFactory.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2009 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.webui.page;
+
+import org.exoplatform.webui.application.WebuiRequestContext;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ServiceLoader;
+
+/**
+ * An UIPage abstract factory
+ *
+ * @author <a href="trongtt(a)gmail.com">Trong Tran</a>
+ * @version $Revision$
+ */
+public abstract class UIPageFactory
+{
+ public static String DEFAULT_FACTORY_ID = "Default";
+
+ protected static Map<String, UIPageFactory> pageFactory = new HashMap<String,
UIPageFactory>();
+
+ static
+ {
+ ServiceLoader<UIPageFactory> loader =
ServiceLoader.load(UIPageFactory.class);
+ for (UIPageFactory factory : loader)
+ {
+ pageFactory.put(factory.getType(), factory);
+ }
+ }
+
+ public static UIPageFactory getInstance(String type)
+ {
+ UIPageFactory factory;
+
+ if (type == null)
+ {
+ factory = pageFactory.get(DEFAULT_FACTORY_ID);
+ }
+ else
+ {
+ factory = pageFactory.get(type);
+ }
+
+ if (factory == null)
+ {
+ throw new UnsupportedOperationException("The " + type + " page
factory is not supported or not loaded");
+ }
+ return factory;
+ }
+
+ public abstract UIPage createUIPage(WebuiRequestContext context) throws Exception;
+
+ public abstract String getType();
+}
\ No newline at end of file
Modified:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/util/Util.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/util/Util.java 2011-04-15
07:43:51 UTC (rev 6231)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/util/Util.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -19,8 +19,6 @@
package org.exoplatform.portal.webui.util;
-import java.util.List;
-
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.config.UserPortalConfigService;
import org.exoplatform.portal.config.model.Page;
@@ -28,6 +26,7 @@
import org.exoplatform.portal.webui.application.UIPortlet;
import org.exoplatform.portal.webui.container.UIContainer;
import org.exoplatform.portal.webui.page.UIPage;
+import org.exoplatform.portal.webui.page.UIPageFactory;
import org.exoplatform.portal.webui.portal.UIPortal;
import org.exoplatform.portal.webui.portal.UIPortalComponent;
import org.exoplatform.portal.webui.workspace.UIEditInlineWorkspace;
@@ -39,6 +38,8 @@
import org.exoplatform.webui.core.UIComponentDecorator;
import org.exoplatform.webui.event.Event;
+import java.util.List;
+
/**
* Jun 5, 2006
*/
@@ -226,8 +227,8 @@
return uiPage;
WebuiRequestContext context = Util.getPortalRequestContext();
- Class<? extends UIPage> clazz = UIPage.getRealClass(page.getFactoryId());
- uiPage = uiParent.createUIComponent(context, clazz, null, null);
+ UIPageFactory clazz = UIPageFactory.getInstance(page.getFactoryId());
+ uiPage = clazz.createUIPage(context);
PortalDataMapper.toUIPage(uiPage, page);
return uiPage;
Modified:
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIMainActionListener.java
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIMainActionListener.java 2011-04-15
07:43:51 UTC (rev 6231)
+++
portal/branches/decoupled-webos/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIMainActionListener.java 2011-04-15
07:47:48 UTC (rev 6232)
@@ -31,6 +31,7 @@
import org.exoplatform.portal.webui.page.UIPage;
import org.exoplatform.portal.webui.page.UIPageBody;
import org.exoplatform.portal.webui.page.UIPageCreationWizard;
+import org.exoplatform.portal.webui.page.UIPageFactory;
import org.exoplatform.portal.webui.page.UISiteBody;
import org.exoplatform.portal.webui.page.UIWizardPageSetInfo;
import org.exoplatform.portal.webui.portal.UIPortal;
@@ -93,8 +94,8 @@
uiApp.setModeState(UIPortalApplication.APP_BLOCK_EDIT_MODE);
// We clone the edited UIPage object, that is required for Abort action
- Class<? extends UIPage> clazz = UIPage.getRealClass(page.getFactoryId());
- UIPage newUIPage = uiWorkingWS.createUIComponent(clazz, null, null);
+ UIPageFactory clazz = UIPageFactory.getInstance(page.getFactoryId());
+ UIPage newUIPage = clazz.createUIPage(null);
PortalDataMapper.toUIPage(newUIPage, page);
uiToolPanel.setWorkingComponent(newUIPage);
Added:
portal/branches/decoupled-webos/webui/portal/src/main/resources/META-INF/services/org.exoplatform.portal.webui.page.UIPageFactory
===================================================================
---
portal/branches/decoupled-webos/webui/portal/src/main/resources/META-INF/services/org.exoplatform.portal.webui.page.UIPageFactory
(rev 0)
+++
portal/branches/decoupled-webos/webui/portal/src/main/resources/META-INF/services/org.exoplatform.portal.webui.page.UIPageFactory 2011-04-15
07:47:48 UTC (rev 6232)
@@ -0,0 +1 @@
+org.exoplatform.portal.webui.page.BaseUIPageFactory
\ No newline at end of file