[jboss-svn-commits] JBoss Portal SVN: r5306 - in trunk/theme/src: bin/test/theme-test-war/layouts/generic main/org/jboss/portal/test/theme/servlet resources/test/theme-test-sar/conf resources/test/theme-test-war/WEB-INF resources/test/theme-test-war/WEB-INF/theme

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 2 17:44:07 EDT 2006


Author: roy.russo at jboss.com
Date: 2006-10-02 17:44:05 -0400 (Mon, 02 Oct 2006)
New Revision: 5306

Added:
   trunk/theme/src/resources/test/theme-test-war/WEB-INF/theme/
   trunk/theme/src/resources/test/theme-test-war/WEB-INF/theme/portal-layout.tld
Removed:
   trunk/theme/src/resources/test/theme-test-sar/conf/theme/
Modified:
   trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp
   trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java
   trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml
Log:
JBPORTAL-1009 - added test servlet, cleaned structure.

Modified: trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp	2006-10-02 15:31:31 UTC (rev 5305)
+++ trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp	2006-10-02 21:44:05 UTC (rev 5306)
@@ -11,7 +11,7 @@
    <!-- inject the theme; default to the renaissance theme if nothing is selected for the portal or the page -->
    <p:theme themeName='renaissance'/>
    <!-- insert header content that was possibly set by portlets on the page -->
-   <p:headerContent/>
+   <%--<p:headerContent/>--%>
 </head>
 
 <body id="body">

Modified: trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java	2006-10-02 15:31:31 UTC (rev 5305)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java	2006-10-02 21:44:05 UTC (rev 5306)
@@ -22,19 +22,51 @@
 
 package org.jboss.portal.test.theme.servlet;
 
+import org.jboss.mx.util.MBeanProxy;
+import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.portal.common.MediaType;
+import org.jboss.portal.common.invocation.AttributeResolver;
+import org.jboss.portal.server.ServerRequest;
+import org.jboss.portal.server.util.HTTPStreamInfo;
+import org.jboss.portal.test.theme.TestHelper;
+import org.jboss.portal.theme.LayoutConstants;
 import org.jboss.portal.theme.LayoutService;
+import org.jboss.portal.theme.PortalLayout;
+import org.jboss.portal.theme.PortalTheme;
+import org.jboss.portal.theme.RuntimeContext;
+import org.jboss.portal.theme.ThemeConstants;
 import org.jboss.portal.theme.ThemeService;
-import org.jboss.portal.theme.impl.LayoutServiceImpl;
-import org.jboss.portal.theme.impl.ThemeServiceImpl;
-import org.jboss.portal.theme.impl.page.PageServiceImpl;
+import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
+import org.jboss.portal.theme.deployment.jboss.PortalThemeMetaDataFactory;
+import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
+import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
+import org.jboss.portal.theme.metadata.PortalThemeMetaData;
+import org.jboss.portal.theme.metadata.RenderSetMetaData;
+import org.jboss.portal.theme.page.ModifiablePageResult;
+import org.jboss.portal.theme.page.ModifiableWindowResult;
+import org.jboss.portal.theme.page.PageResult;
 import org.jboss.portal.theme.page.PageService;
-import org.jboss.system.ServiceMBeanSupport;
+import org.jboss.portal.theme.page.Region;
+import org.jboss.portal.theme.page.RegionOrientation;
+import org.jboss.portal.theme.page.WindowContext;
+import org.jboss.portal.theme.render.PortalRenderSet;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
 
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author <a href="mailto:roy at jboss.org">Roy Russo</a>
@@ -42,27 +74,69 @@
 
 public class TestThemeServlet extends HttpServlet
 {
-   LayoutService layoutService;
-   ThemeService themeService;
-   PageService pageService;
+   private PageService pageService;
 
+   private ModifiableWindowResult markupResult;
+   private PortalRenderSet renderSet;
+   private PortalLayout layout;
+   private PortalTheme theme;
+   private AttributeResolver navCtx;
+   private Map portalProps = new HashMap();
+   private Map pageProps = new HashMap();
+
+   /**
+    * Set theme api services
+    */
    public void init()
    {
       try
       {
-         layoutService = new LayoutServiceImpl();
-         ((ServiceMBeanSupport) layoutService).create();
-         ((ServiceMBeanSupport) layoutService).start();
+         MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
+         LayoutService layoutService = (LayoutService) MBeanProxy.get(LayoutService.class, new ObjectName("portal:service=LayoutService"), mbeanServer);
+         ThemeService themeService = (ThemeService) MBeanProxy.get(ThemeService.class, new ObjectName("portal:service=ThemeService"), mbeanServer);
+         pageService = (PageService) MBeanProxy.get(PageService.class, new ObjectName("portal:service=PageService"), mbeanServer);
 
-         themeService = new ThemeServiceImpl();
-         ((ServiceMBeanSupport) themeService).create();
-         ((ServiceMBeanSupport) themeService).start();
+         // new ModifiableWindowResult()
+         markupResult = TestHelper.createWindowResult("title", "content");
 
-         pageService = new PageServiceImpl();
-         pageService.setLayoutService(layoutService);
-         pageService.setThemeService(themeService);
-         ((ServiceMBeanSupport) pageService).create();
-         ((ServiceMBeanSupport) pageService).start();
+         ClassLoader loader = Thread.currentThread().getContextClassLoader();
+         RuntimeContext runtimeContext = new RuntimeContext("TestAppId", getServletContext(), "/theme-test", loader);
+
+         // add layouts from metadata
+         InputStream in = null;
+         in = getServletContext().getResourceAsStream("/WEB-INF/portal-layouts.xml");
+         Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+         List portalLayouts = (List) unmarshaller.unmarshal(in, new PortalLayoutMetaDataFactory(), null);
+         for(Iterator i = portalLayouts.iterator(); i.hasNext();)
+         {
+            PortalLayoutMetaData layoutMD = (PortalLayoutMetaData) i.next();
+            layoutService.addLayout(runtimeContext, layoutMD);
+         }
+         layout = layoutService.getLayout("generic", true);
+         markupResult.setLayoutURI(layout.getLayoutInfo().getURI());
+
+         // add rendersets from metadata
+         in = getServletContext().getResourceAsStream("/WEB-INF/layout/portal-renderSet.xml");
+         unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+         List renderSets = (List) unmarshaller.unmarshal(in, new RenderSetMetaDataFactory(), null);
+         for(Iterator i = renderSets.iterator(); i.hasNext();)
+         {
+            RenderSetMetaData renderSetMD = (RenderSetMetaData) i.next();
+            layoutService.addRenderSet(runtimeContext, renderSetMD);
+         }
+         renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
+
+         // add themes from metadata
+         in = getServletContext().getResourceAsStream("/WEB-INF/portal-themes.xml");
+         unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+         List themes = (List) unmarshaller.unmarshal(in, new PortalThemeMetaDataFactory(), null);
+         for(Iterator i = themes.iterator(); i.hasNext();)
+         {
+            PortalThemeMetaData themeMD = (PortalThemeMetaData) i.next();
+            themeService.addTheme(runtimeContext, themeMD);
+         }
+         theme = themeService.getTheme("renaissance", true);
+         markupResult.setTheme(theme);
       }
       catch(Exception e)
       {
@@ -72,11 +146,59 @@
 
    public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException
    {
+      HTTPStreamInfo streamInfo = new HTTPStreamInfo(MediaType.HTML, "utf-8");
+      portalProps.put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
+      ServerRequest serverRequest = new ServerRequest();
 
+      // create windowcontext and markup
+      Region region1 = new Region("regionA", "regionA", RegionOrientation.HORIZONTAL);
+      Region region2 = new Region("regionB", "regionA", RegionOrientation.VERTICAL);
+
+      WindowContext wCtx1 = new WindowContext("window1", "window1id", region1.getId(), 0);
+      WindowContext wCtx2 = new WindowContext("window2", "window2id", region1.getId(), 1);
+      WindowContext wCtx3 = new WindowContext("window3", "window3id", region2.getId(), 0);
+
+      // pageresult
+      PageResult pageResult = createPageResult("TestPage", pageProps, portalProps, new WindowContext[]{wCtx1, wCtx2, wCtx3});
+      pageResult.setTheme(theme);
+
+      // set markup result props
+      markupResult.setPortalProperties(portalProps);
+      markupResult.setPageProperties(pageProps);
+      markupResult.setPageName("TestPage");
+
+      // set the renderctx and req/res attr
+      RenderContext renderCtx = new RenderContext(layout, streamInfo, markupResult, serverRequest);
+      httpServletResponse.setContentType(renderCtx.getContentType().toString());
+      httpServletResponse.setCharacterEncoding(renderCtx.getCharset());
+      httpServletRequest.setAttribute(LayoutConstants.ATTR_RENDERCONTEXT, renderCtx);
+      httpServletRequest.setAttribute(LayoutConstants.ATTR_PAGE, pageResult);
+      httpServletRequest.setAttribute(ThemeConstants.ATTR_THEME, theme);
+
+      try
+      {
+         RequestDispatcher dispatcher = renderCtx.getLayoutInfo().getServletContext().getRequestDispatcher(markupResult.getLayoutURI());
+         dispatcher.include(httpServletRequest, httpServletResponse);
+      }
+      catch(Exception e)
+      {
+         e.printStackTrace();
+      }
    }
 
+
    public void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException
    {
       doGet(httpServletRequest, httpServletResponse);
    }
+
+   private static PageResult createPageResult(String pageName, Map pageProperties, Map portalProperties, WindowContext[] windows)
+   {
+      ModifiablePageResult pageResult = new ModifiablePageResult(pageName, pageProperties, portalProperties);
+      for(int i = 0; i < windows.length; i++)
+      {
+         pageResult.addWindowContext(windows[i]);
+      }
+      return pageResult;
+   }
 }

Added: trunk/theme/src/resources/test/theme-test-war/WEB-INF/theme/portal-layout.tld
===================================================================
--- trunk/theme/src/resources/test/theme-test-war/WEB-INF/theme/portal-layout.tld	2006-10-02 15:31:31 UTC (rev 5305)
+++ trunk/theme/src/resources/test/theme-test-war/WEB-INF/theme/portal-layout.tld	2006-10-02 21:44:05 UTC (rev 5306)
@@ -0,0 +1,45 @@
+<taglib
+   xmlns="http://java.sun.com/xml/ns/j2ee"
+   xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+   version="2.0">
+   <tlib-version>1.0</tlib-version>
+   <jsp-version>2.0</jsp-version>
+   <short-name></short-name>
+   <uri>http://www.jboss.org/portal</uri>
+   <tag>
+      <name>region</name>
+      <tag-class>org.jboss.portal.theme.tag.RegionTagHandler</tag-class>
+      <body-content>empty</body-content>
+      <attribute>
+         <name>orientation</name>
+      </attribute>
+      <attribute>
+         <name>regionName</name>
+      </attribute>
+      <attribute>
+         <name>regionID</name>
+      </attribute>
+   </tag>
+   <tag>
+      <name>portlet</name>
+      <tag-class>org.jboss.portal.theme.tag.PortletTagHandler</tag-class>
+      <body-content>empty</body-content>
+      <attribute>
+         <name>windowName</name>
+      </attribute>
+   </tag>
+   <tag>
+      <name>theme</name>
+      <tag-class>org.jboss.portal.theme.tag.ThemeTagHandler</tag-class>
+      <body-content>empty</body-content>
+      <attribute>
+         <name>themeName</name>
+      </attribute>
+   </tag>
+   <tag>
+      <name>headerContent</name>
+      <tag-class>org.jboss.portal.theme.tag.HeaderContentTagHandler</tag-class>
+      <body-content>empty</body-content>
+   </tag>
+</taglib>

Modified: trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml
===================================================================
--- trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml	2006-10-02 15:31:31 UTC (rev 5305)
+++ trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml	2006-10-02 21:44:05 UTC (rev 5306)
@@ -11,20 +11,19 @@
       <servlet-class>org.jboss.portal.test.theme.servlet.TestAJAXServlet</servlet-class>
       <load-on-startup>0</load-on-startup>
    </servlet>
-   <servlet-mapping>
-      <servlet-name>TestAJAXServlet</servlet-name>
-      <url-pattern>/testajax/*</url-pattern>
-   </servlet-mapping>
-
    <servlet>
       <description>Renders a theme for testing</description>
       <servlet-name>TestThemeServlet</servlet-name>
       <servlet-class>org.jboss.portal.test.theme.servlet.TestThemeServlet</servlet-class>
       <load-on-startup>0</load-on-startup>
    </servlet>
+
    <servlet-mapping>
+      <servlet-name>TestAJAXServlet</servlet-name>
+      <url-pattern>/testajax/*</url-pattern>
+   </servlet-mapping>
+   <servlet-mapping>
       <servlet-name>TestThemeServlet</servlet-name>
-      <url-pattern>/themetest/*</url-pattern>
+      <url-pattern>/testtheme/*</url-pattern>
    </servlet-mapping>
-
 </web-app>




More information about the jboss-svn-commits mailing list