[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