JBoss Portal SVN: r6935 - in trunk: theme/src/bin/test/theme-test-war/WEB-INF and 5 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-06 12:50:47 -0400 (Fri, 06 Apr 2007)
New Revision: 6935
Added:
trunk/theme/src/main/org/jboss/portal/test/theme/render/
trunk/theme/src/main/org/jboss/portal/test/theme/render/TestDecorationRenderer.java
trunk/theme/src/main/org/jboss/portal/test/theme/render/TestPortletRenderer.java
trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRegionRenderer.java
trunk/theme/src/main/org/jboss/portal/test/theme/render/TestWindowRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaStatus.java
Modified:
trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java
trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml
trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml
trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp
trunk/theme/src/bin/test/theme-test-war/themes/style.css
trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaConstants.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java
Log:
improve dyna stuff
Modified: trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -57,6 +57,7 @@
import org.jboss.portal.theme.impl.render.dynamic.response.UpdatePageLocationResponse;
import org.jboss.portal.theme.impl.render.dynamic.response.UpdatePageStateResponse;
import org.jboss.portal.theme.impl.render.dynamic.DynaConstants;
+import org.jboss.portal.theme.impl.render.dynamic.DynaStatus;
import org.jboss.portal.theme.LayoutService;
import org.jboss.portal.theme.PortalLayout;
import org.jboss.portal.theme.PageService;
@@ -309,7 +310,7 @@
RenderContext renderContext = layout.getRenderContext(markupInfo, dispatcher, buffer);
// Should push region context as well
- renderContext.setAttribute(DynaConstants.AJAX_WINDOW_ENABLED, Boolean.TRUE);
+ DynaStatus.set(renderContext, DynaStatus.DYNA_RENDERED_VALUE);
renderContext.pushObjectRenderContext(res);
// Render
Modified: trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml 2007-04-06 16:50:47 UTC (rev 6935)
@@ -41,22 +41,13 @@
<decoration-renderer>org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer</decoration-renderer>
</set>
</renderSet>
- <renderSet name="ajaxDivRenderer">
+ <renderSet name="testRenderer">
<set content-type="text/html">
<ajax-enabled>true</ajax-enabled>
- <region-renderer>org.jboss.portal.theme.impl.render.div.DivRegionRenderer</region-renderer>
- <window-renderer>org.jboss.portal.theme.impl.render.div.DivWindowRenderer</window-renderer>
- <portlet-renderer>org.jboss.portal.theme.impl.render.div.DivPortletRenderer</portlet-renderer>
- <decoration-renderer>org.jboss.portal.theme.impl.render.div.DivDecorationRenderer</decoration-renderer>
+ <region-renderer>org.jboss.portal.test.theme.render.TestRegionRenderer</region-renderer>
+ <window-renderer>org.jboss.portal.test.theme.render.TestWindowRenderer</window-renderer>
+ <portlet-renderer>org.jboss.portal.test.theme.render.TestPortletRenderer</portlet-renderer>
+ <decoration-renderer>org.jboss.portal.test.theme.render.TestDecorationRenderer</decoration-renderer>
</set>
</renderSet>
- <renderSet name="ajaxEmptyRenderer">
- <set content-type="text/html">
- <ajax-enabled>true</ajax-enabled>
- <region-renderer>org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer</region-renderer>
- <window-renderer>org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer</window-renderer>
- <portlet-renderer>org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer</portlet-renderer>
- <decoration-renderer>org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer</decoration-renderer>
- </set>
- </renderSet>
</portal-renderSet>
Modified: trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-06 16:50:47 UTC (rev 6935)
@@ -24,7 +24,7 @@
<themes>
<theme>
- <name>simple</name>
+ <name>testTheme</name>
<link rel="stylesheet" id="main_css" href="/themes/style.css" type="text/css"/>
</theme>
</themes>
\ No newline at end of file
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 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp 2007-04-06 16:50:47 UTC (rev 6935)
@@ -3,22 +3,14 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html;"/>
+ <meta http-equiv="Content-Type" content="text/html"/>
<p:theme themeName="renaissance"/>
<p:headerContent/>
</head>
-<body id="body">
+<body>
<p:region regionName='AJAXScripts' regionID='AJAXScripts'/>
-<div id="portal-container">
- <div id="sizer">
- <div id="expander">
- <div id="content-container">
- <p:region regionName='left' regionID='regionA'/>
- <p:region regionName='center' regionID='regionB'/>
- </div>
- </div>
- </div>
-</div>
+<p:region regionName='left' regionID='regionA'/>
+<p:region regionName='center' regionID='regionB'/>
<p:region regionName='AJAXFooter' regionID='AJAXFooter'/>
</body>
</html>
Modified: trunk/theme/src/bin/test/theme-test-war/themes/style.css
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/themes/style.css 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/bin/test/theme-test-war/themes/style.css 2007-04-06 16:50:47 UTC (rev 6935)
@@ -1,5 +1,20 @@
-div {
- border: 1px solid black;
- padding: 0px;
- margin: 1px;
+div.test-region {
+ width:512px;
+ padding:16px;
+ background-color:red;
+}
+
+div.test-window {
+ padding:16px;
+ background-color:blue;
+}
+
+div.test-decoration {
+ height:32px;
+ background-color:green;
+}
+
+div.test-portlet {
+ height:128px;
+ background-color:yellow;
}
\ No newline at end of file
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -26,7 +26,6 @@
import org.jboss.mx.util.MBeanProxy;
import org.jboss.portal.theme.LayoutService;
import org.jboss.portal.theme.ThemeService;
-import org.jboss.portal.theme.PageService;
import org.jboss.portal.theme.PortalLayout;
import org.jboss.portal.theme.PortalTheme;
import org.jboss.portal.theme.ThemeConstants;
@@ -38,8 +37,6 @@
import org.jboss.portal.theme.render.RenderContext;
import org.jboss.portal.common.util.MediaType;
import org.jboss.portal.common.util.MarkupInfo;
-import org.jboss.portal.server.ServerRequest;
-import org.jboss.portal.test.theme.tmp.servlet.TestThemeServlet;
import org.jboss.portal.web.ServletContextDispatcher;
import org.jboss.portal.web.spi.ServletContainerContext;
@@ -50,7 +47,6 @@
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.io.IOException;
-import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
@@ -83,14 +79,10 @@
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);
- PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
+ PortalRenderSet renderSet = layoutService.getRenderSet("testRenderer", MediaType.HTML);
PortalLayout layout = layoutService.getLayout("generic", true);
- PortalTheme theme = themeService.getTheme("simple", true);
+ PortalTheme theme = themeService.getTheme("testTheme", true);
- System.out.println("renderSet = " + renderSet);
- System.out.println("layout = " + layout);
- System.out.println("theme = " + theme);
-
// Build a page structure
PageResult pageRenderCtx = new PageResult("test_page");
@@ -110,12 +102,12 @@
//
for (int i = 0; i < 2; i++)
{
- WindowContext wCtx = new WindowContext("WindowA_" + i, "WindowA_" + i, "left", i, createWindowMarkup("WindowA_" + i + " Title", "<p>WindowA_" + i + " Content</p>"));
+ WindowContext wCtx = new WindowContext("WindowA_" + i, "WindowA_" + i, "left", i, createWindowMarkup("WindowA_" + i + " Title", "WindowA_" + i + " Content"));
pageRenderCtx.addWindowContext(wCtx);
}
for (int i = 0; i < 2; i++)
{
- WindowContext wCtx = new WindowContext("WindowB_" + i, "WindowB_" + i, "center", i, createWindowMarkup("WindowB_" + i + " Title", "<p>WindowB_" + i + " Content</p>"));
+ WindowContext wCtx = new WindowContext("WindowB_" + i, "WindowB_" + i, "center", i, createWindowMarkup("WindowB_" + i + " Title", "WindowB_" + i + " Content"));
pageRenderCtx.addWindowContext(wCtx);
}
Added: trunk/theme/src/main/org/jboss/portal/test/theme/render/TestDecorationRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/render/TestDecorationRenderer.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/render/TestDecorationRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -0,0 +1,43 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.render;
+
+import org.jboss.portal.theme.render.DecorationRenderer;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.render.DecorationRenderContext;
+import org.jboss.portal.theme.render.RenderException;
+
+import java.io.PrintWriter;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ */
+public class TestDecorationRenderer
+ implements DecorationRenderer
+{
+ public void render(RenderContext renderContext, DecorationRenderContext drc) throws RenderException
+ {
+ PrintWriter writer = renderContext.getWriter();
+ writer.print("<div class=\"test-decoration\">Decoration</div>");
+ }
+}
Added: trunk/theme/src/main/org/jboss/portal/test/theme/render/TestPortletRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/render/TestPortletRenderer.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/render/TestPortletRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -0,0 +1,45 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.render;
+
+import org.jboss.portal.theme.render.PortletRenderer;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.render.PortletRenderContext;
+import org.jboss.portal.theme.render.RenderException;
+
+import java.io.PrintWriter;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ */
+public class TestPortletRenderer
+ implements PortletRenderer
+{
+ public void render(RenderContext renderContext, PortletRenderContext prc) throws RenderException
+ {
+ PrintWriter writer = renderContext.getWriter();
+ writer.print("<div class=\"test-portlet\">");
+ writer.print(prc.getMarkup());
+ writer.print("</div>");
+ }
+}
Added: trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRegionRenderer.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRegionRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -0,0 +1,61 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.render;
+
+import org.jboss.portal.theme.render.RegionRenderer;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.render.RegionRenderContext;
+import org.jboss.portal.theme.render.RenderException;
+import org.jboss.portal.theme.render.WindowRenderContext;
+
+import java.util.Iterator;
+import java.io.PrintWriter;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ */
+public class TestRegionRenderer
+ implements RegionRenderer
+{
+
+ public void renderHeader(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
+ {
+ PrintWriter writer = renderContext.getWriter();
+ writer.print("<div class=\"test-region\">");
+ }
+
+ public void renderFooter(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
+ {
+ PrintWriter writer = renderContext.getWriter();
+ writer.print("</div>");
+ }
+
+ public void renderBody(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
+ {
+ for (Iterator i = rrc.getWindows().iterator(); i.hasNext();)
+ {
+ WindowRenderContext wrc = (WindowRenderContext)i.next();
+ renderContext.render(wrc);
+ }
+ }
+}
Added: trunk/theme/src/main/org/jboss/portal/test/theme/render/TestWindowRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/render/TestWindowRenderer.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/render/TestWindowRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -0,0 +1,45 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.render;
+
+import org.jboss.portal.theme.render.WindowRenderer;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.render.WindowRenderContext;
+import org.jboss.portal.theme.render.RenderException;
+
+import java.io.PrintWriter;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ */
+public class TestWindowRenderer implements WindowRenderer
+{
+ public void render(RenderContext renderContext, WindowRenderContext wrc) throws RenderException
+ {
+ PrintWriter writer = renderContext.getWriter();
+ writer.print("<div class=\"test-window\">");
+ renderContext.render(wrc.getDecoration());
+ renderContext.render(wrc.getPortlet());
+ writer.print("</div>");
+ }
+}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaConstants.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaConstants.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaConstants.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -42,6 +42,9 @@
public static final String VIEW_STATE = "theme.ajax.view_state";
/** . */
- public static final String AJAX_WINDOW_ENABLED = "ajax_window_enabled";
+// public static final String AJAX_WINDOW_ENABLED = "ajax_window_enabled";
+
+ public static final String DYNA_RENDER_STATUS = "dyna_render_status";
+
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -51,22 +51,22 @@
public void render(RenderContext renderContext, DecorationRenderContext drc) throws RenderException
{
- if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
+ switch(DynaStatus.get(renderContext))
{
- //
- DynaWindowRenderer.handleProvided.set(Boolean.TRUE);
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ DynaWindowRenderer.handleProvided.set(Boolean.TRUE);
- //
- PrintWriter markup = renderContext.getWriter();
- markup.print("<div class=\"dyna-decoration\">\n");
- markup.print("<div class=\"handle\">");
- delegate.render(renderContext, drc);
- markup.print("</div>\n");
- markup.print("</div>\n");
+ //
+ PrintWriter markup = renderContext.getWriter();
+ markup.print("<div class=\"dyna-decoration\">\n");
+ markup.print("<div class=\"handle\">");
+ delegate.render(renderContext, drc);
+ markup.print("</div>\n");
+ markup.print("</div>\n");
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
+ delegate.render(renderContext, drc);
+ break;
}
- else
- {
- delegate.render(renderContext, drc);
- }
}
}
\ No newline at end of file
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -58,43 +58,45 @@
private void doDND(RenderContext renderContext, PortletRenderContext prc) throws RenderException
{
- if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
+ switch(DynaStatus.get(renderContext))
{
- // Provide handle on content if needed
- if (Boolean.FALSE.equals(DynaWindowRenderer.handleProvided.get()))
- {
- //
- DynaWindowRenderer.handleProvided.set(Boolean.TRUE);
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ // Provide handle on content if needed
+ if (Boolean.FALSE.equals(DynaWindowRenderer.handleProvided.get()))
+ {
+ //
+ DynaWindowRenderer.handleProvided.set(Boolean.TRUE);
- //
+ //
// StringBuffer out = renderContext.getMarkupFragment();
// out.append("<span class=\"handle\">");
- doCatchClicks(renderContext, prc);
+ doCatchClicks(renderContext, prc);
// out.append("</span>");
- }
- else
- {
+ }
+ else
+ {
+ doCatchClicks(renderContext, prc);
+ }
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
doCatchClicks(renderContext, prc);
- }
+ break;
}
- else
- {
- doCatchClicks(renderContext, prc);
- }
}
private void doCatchClicks(RenderContext renderContext, PortletRenderContext prc) throws RenderException
{
- if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
+ switch(DynaStatus.get(renderContext))
{
- PrintWriter out = renderContext.getWriter();
- out.print("<div class=\"dyna-portlet\">");
- delegate.render(renderContext, prc);
- out.print("</div>");
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ PrintWriter out = renderContext.getWriter();
+ out.print("<div class=\"dyna-portlet\">");
+ delegate.render(renderContext, prc);
+ out.print("</div>");
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
+ delegate.render(renderContext, prc);
+ break;
}
- else
- {
- delegate.render(renderContext, prc);
- }
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -72,7 +72,6 @@
delegate = regionRenderer;
}
-
public void renderHeader(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
{
PrintWriter markup = renderContext.getWriter();
@@ -85,11 +84,15 @@
boolean pageEnabled = onPage != null && "true".equals(onPage);
//
- boolean regionEnabled = false;
- if (pageEnabled)
+ int status = DynaStatus.CLASSIC_RENDERED_VALUE;
+
+ // Handle special ajax region here
+ if ("AJAXScripts".equals(rrc.getId()))
{
- // Handle special ajax region here
- if ("AJAXScripts".equals(rrc.getId()))
+ status = DynaStatus.NOT_RENDERED_VALUE;
+
+ //
+ if (pageEnabled)
{
markup.print("<script type='text/javascript' src='");
markup.print(jsBase);
@@ -124,53 +127,73 @@
//
markup.print("</script>\n");
}
- else if ("AJAXFooter".equals(rrc.getId()))
+ }
+ else if ("AJAXFooter".equals(rrc.getId()))
+ {
+ status = DynaStatus.NOT_RENDERED_VALUE;
+
+ //
+ if (pageEnabled)
{
markup.print("<script type='text/javascript'>footer()</script>\n");
}
- else
+ }
+ else
+ {
+ if (pageEnabled)
{
String onRegion = rrc.getProperty(DynaConstants.OBJECT_ENABLED);
- regionEnabled = onRegion == null || "true".equals(onRegion);
+ boolean regionEnabled = onRegion == null || "true".equals(onRegion);
+ if (regionEnabled)
+ {
+ status = DynaStatus.DYNA_RENDERED_VALUE;
+ }
}
}
//
- renderContext.setAttribute(DynaConstants.AJAX_WINDOW_ENABLED, Boolean.valueOf(regionEnabled));
+ renderContext.setAttribute(DynaConstants.DYNA_RENDER_STATUS, new Integer(status));
//
- if (regionEnabled)
+ switch(status)
{
- //
- delegate.renderHeader(renderContext, rrc);
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ delegate.renderHeader(renderContext, rrc);
- // We need height and width otherwise the region will not be usable when empty
- markup.print("<div class=\"dyna-region\" style=\"height:200px;width=200px\" id=\"");
- markup.print(rrc.getId());
- markup.print("\">");
+ // We need height and width otherwise the region will not be usable when empty
+ markup.print("<div class=\"dyna-region\" style=\"height:200px;width=200px\" id=\"");
+ markup.print(rrc.getId());
+ markup.print("\">");
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
+ delegate.renderHeader(renderContext, rrc);
+ break;
+ case DynaStatus.NOT_RENDERED_VALUE:
+ break;
}
- else
- {
- delegate.renderHeader(renderContext, rrc);
- }
}
public void renderFooter(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
{
- //
- if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
- {
- PrintWriter markup = renderContext.getWriter();
+ int status = DynaStatus.get(renderContext);
- //
- markup.print("</div>");
- }
-
//
- delegate.renderFooter(renderContext, rrc);
+ renderContext.setAttribute(DynaConstants.DYNA_RENDER_STATUS, null);
//
- renderContext.setAttribute(DynaConstants.AJAX_WINDOW_ENABLED, null);
+ switch(status)
+ {
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ PrintWriter markup = renderContext.getWriter();
+ markup.print("</div>");
+ delegate.renderFooter(renderContext, rrc);
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
+ delegate.renderFooter(renderContext, rrc);
+ break;
+ case DynaStatus.NOT_RENDERED_VALUE:
+ break;
+ }
}
/**
@@ -178,6 +201,16 @@
*/
public void renderBody(RenderContext renderContext, final RegionRenderContext rrc) throws RenderException
{
- delegate.renderBody(renderContext, rrc);
+ switch(DynaStatus.get(renderContext))
+ {
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ delegate.renderBody(renderContext, rrc);
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
+ delegate.renderBody(renderContext, rrc);
+ break;
+ case DynaStatus.NOT_RENDERED_VALUE:
+ break;
+ }
}
}
Added: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaStatus.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaStatus.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaStatus.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -0,0 +1,59 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.theme.impl.render.dynamic;
+
+import org.jboss.portal.theme.render.RenderContext;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class DynaStatus
+{
+
+ /** . */
+ private static final Integer[] INTEGERS = {new Integer(0),new Integer(1),new Integer(2),new Integer(3)};
+
+ /** . */
+ public static final int UNKNOWN_VALUE = 0;
+
+ /** . */
+ public static final int DYNA_RENDERED_VALUE = 2;
+
+ /** . */
+ public static final int CLASSIC_RENDERED_VALUE = 3;
+
+ /** . */
+ public static final int NOT_RENDERED_VALUE = 4;
+
+ public static int get(RenderContext renderContext)
+ {
+ Integer status = (Integer)renderContext.getAttribute(DynaConstants.DYNA_RENDER_STATUS);
+ return status != null ? status.intValue() : UNKNOWN_VALUE;
+ }
+
+ public static void set(RenderContext renderContext, int status)
+ {
+ renderContext.setAttribute(DynaConstants.DYNA_RENDER_STATUS, INTEGERS[status]);
+ }
+}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java 2007-04-06 16:50:47 UTC (rev 6935)
@@ -56,29 +56,29 @@
/** @see WindowRenderer#render */
public void render(RenderContext renderContext, WindowRenderContext wrc) throws RenderException
{
- if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
+ switch(DynaStatus.get(renderContext))
{
- // For now we say we have no provided any handle so far for the window
- handleProvided.set(Boolean.FALSE);
+ case DynaStatus.DYNA_RENDERED_VALUE:
+ // For now we say we have no provided any handle so far for the window
+ handleProvided.set(Boolean.FALSE);
- //
- PrintWriter out = renderContext.getWriter();
- out.print("<div class=\"dyna-window\"><div id=\"");
- out.print(wrc.getId());
- out.print("\"/>\n");
- delegate.render(renderContext, wrc);
- out.print("</div></div>\n");
+ //
+ PrintWriter out = renderContext.getWriter();
+ out.print("<div class=\"dyna-window\"><div id=\"");
+ out.print(wrc.getId());
+ out.print("\"/>\n");
+ delegate.render(renderContext, wrc);
+ out.print("</div></div>\n");
- //
- handleProvided.set(null);
- }
- else
- {
- //
- handleProvided.set(null);
+ //
+ handleProvided.set(null);
+ break;
+ case DynaStatus.CLASSIC_RENDERED_VALUE:
+ handleProvided.set(null);
- //
- delegate.render(renderContext, wrc);
+ //
+ delegate.render(renderContext, wrc);
+ break;
}
}
}
17 years, 3 months
JBoss Portal SVN: r6934 - in trunk: theme and 12 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-06 10:30:52 -0400 (Fri, 06 Apr 2007)
New Revision: 6934
Added:
trunk/theme/src/bin/test/theme-test-war/themes/style.css
trunk/theme/src/main/org/jboss/portal/theme/impl/JSPRenderContext.java
trunk/theme/src/main/org/jboss/portal/theme/impl/WriterRenderContext.java
Removed:
trunk/theme/src/resources/test/theme-test-war/WEB-INF/layout/
trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-layouts.xml
trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-themes.xml
Modified:
trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java
trunk/theme/build.xml
trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml
trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java
trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivDecorationRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivPortletRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivRegionRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivWindowRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyPortletRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyRegionRenderer.java
trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java
trunk/theme/src/main/org/jboss/portal/theme/tag/HeaderContentTagHandler.java
trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java
trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java
trunk/theme/src/resources/test/theme-test-sar/META-INF/jboss-service.xml
trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml
Log:
- change the RenderContext#StringBuffer to a Writer
- make the difference between rendering a fragment and render the page using the response provided by the http servlet response
Modified: trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -67,6 +67,8 @@
import javax.servlet.ServletException;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
@@ -297,19 +299,24 @@
//
MarkupInfo markupInfo = (MarkupInfo)invocation.getResponse().getContentInfo();
- //
+ // The buffer
+ StringWriter buffer = new StringWriter();
+
+ // Get a dispatcher
ServletContextDispatcher dispatcher = new ServletContextDispatcher(invocation.getServerContext().getClientRequest(), invocation.getServerContext().getClientResponse(), controllerContext.getController().getServletContainerContext());
- RenderContext renderContext = layout.getRenderContext(markupInfo, dispatcher);
+ // get render context
+ RenderContext renderContext = layout.getRenderContext(markupInfo, dispatcher, buffer);
+
// Should push region context as well
renderContext.setAttribute(DynaConstants.AJAX_WINDOW_ENABLED, Boolean.TRUE);
renderContext.pushObjectRenderContext(res);
- //
+ // Render
renderContext.render(wc);
- //
- updatePage.addFragment(wc.getId(), renderContext.getMarkupFragment().toString());
+ // Add render to the page
+ updatePage.addFragment(wc.getId(), buffer.toString());
}
}
catch (Exception e)
Modified: trunk/theme/build.xml
===================================================================
--- trunk/theme/build.xml 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/build.xml 2007-04-06 14:30:52 UTC (rev 6934)
@@ -238,16 +238,12 @@
<fileset dir="${jboss.portal-common.root}/lib" includes="portal-common-lib.jar"/>
<fileset dir="${jboss.portal-server.root}/lib" includes="portal-server-lib.jar"/>
<fileset dir="${jboss.portal-jems.root}/lib" includes="portal-jems-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portlet-api.root}/lib" includes="portal-api-lib.jar"/>
<fileset dir="${jboss.portal-theme.root}/lib" includes="portal-theme-lib.jar"/>
<fileset dir="${build.lib}" includes="portal-theme-test-lib.jar"/>
</jar>
- <!-- easy deployment - for testing
- <require file="${jboss.home}/server/${portal.deploy.dir}"/>
- <delete file="${jboss.home}/server/${portal.deploy.dir}/theme-test.sar"/>
- <copy file="${build.lib}/theme-test.sar" todir="${jboss.home}/server/${portal.deploy.dir}" overwrite="true"/>
- -->
</target>
<target name="jar-test" description="Generate the theme test artifacts" depends="init">
Modified: trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-06 14:30:52 UTC (rev 6934)
@@ -24,6 +24,7 @@
<themes>
<theme>
- <name>empty</name>
+ <name>simple</name>
+ <link rel="stylesheet" id="main_css" href="/themes/style.css" type="text/css"/>
</theme>
</themes>
\ No newline at end of file
Added: trunk/theme/src/bin/test/theme-test-war/themes/style.css
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/themes/style.css (rev 0)
+++ trunk/theme/src/bin/test/theme-test-war/themes/style.css 2007-04-06 14:30:52 UTC (rev 6934)
@@ -0,0 +1,5 @@
+div {
+ border: 1px solid black;
+ padding: 0px;
+ margin: 1px;
+}
\ No newline at end of file
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -40,6 +40,8 @@
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.server.ServerRequest;
import org.jboss.portal.test.theme.tmp.servlet.TestThemeServlet;
+import org.jboss.portal.web.ServletContextDispatcher;
+import org.jboss.portal.web.spi.ServletContainerContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -77,17 +79,26 @@
MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
// Get services
+ ServletContainerContext servletContainerContext = (ServletContainerContext)MBeanProxy.get(ServletContainerContext.class, new ObjectName("portal:service=ServletContainerContext"), mbeanServer);
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);
PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
PortalLayout layout = layoutService.getLayout("generic", true);
- PortalTheme theme = themeService.getTheme("empty", true);
+ PortalTheme theme = themeService.getTheme("simple", true);
+ System.out.println("renderSet = " + renderSet);
+ System.out.println("layout = " + layout);
+ System.out.println("theme = " + theme);
+
// Build a page structure
PageResult pageRenderCtx = new PageResult("test_page");
//
+ pageRenderCtx.setTheme(theme);
+ pageRenderCtx.setLayoutState(null);
+
+ //
pageRenderCtx.getPageProperties().put(DynaConstants.JAVASCRIPT_BASE, "/portal-ajax");
pageRenderCtx.getPageProperties().put(DynaConstants.ASYNC_SERVER_URL, "http://localhost:8080/portal-ajax/ajax");
@@ -95,7 +106,6 @@
pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_THEME, theme.getThemeInfo().getName());
pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_LAYOUT, layout.getLayoutInfo().getName());
- pageRenderCtx.setLayoutState(null);
//
for (int i = 0; i < 2; i++)
@@ -110,9 +120,17 @@
}
//
- MarkupInfo markupInfo = new MarkupInfo(MediaType.HTML, "utf-8");
- RenderContext renderCtx = layout.getRenderContext(markupInfo, null);
+ MarkupInfo markupInfo = new MarkupInfo(MediaType.HTML, "UTF-8");
+ ServletContextDispatcher dispatcher = new ServletContextDispatcher(request, response, servletContainerContext);
+
+ RenderContext renderCtx = layout.getRenderContext(markupInfo, dispatcher);
+
+ renderCtx.setAttribute(ThemeConstants.ATTR_THEME, theme);
+
+ renderCtx.render(pageRenderCtx);
+
+
// //
// ServerRequest serverRequest = new ServerRequest(null);
//
Modified: trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -28,6 +28,8 @@
import org.jboss.portal.theme.render.PageRenderer;
import org.jboss.portal.web.ServletContextDispatcher;
+import java.io.Writer;
+
/**
* Implementation of a <code>PortalLayout</code>. <p>An instance of this class represents the meta data of a portal
* layout.</p>
@@ -66,5 +68,23 @@
return serviceInfo;
}
+ /**
+ * Provides a render context that will render its markup in the response provided by the servlet context
+ * dispatcher.
+ *
+ * @param markupInfo
+ * @param dispatcher
+ * @return
+ */
public abstract RenderContext getRenderContext(MarkupInfo markupInfo, ServletContextDispatcher dispatcher);
+
+ /**
+ * Provides a render context that will render its markup in the provided writer.
+ *
+ * @param markupInfo
+ * @param dispatcher
+ * @param writer
+ * @return
+ */
+ public abstract RenderContext getRenderContext(MarkupInfo markupInfo, ServletContextDispatcher dispatcher, Writer writer);
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -39,6 +39,8 @@
import javax.servlet.ServletException;
import java.io.IOException;
+import java.io.Writer;
+import java.io.PrintWriter;
import java.util.Iterator;
/**
@@ -56,9 +58,18 @@
RendererFactory factory = new RendererFactoryImpl(this, serviceInfo, info);
//
- return new RenderContext(factory, dispatcher, markupInfo);
+ return new JSPRenderContext(factory, dispatcher, markupInfo);
}
+
+ public RenderContext getRenderContext(MarkupInfo markupInfo, ServletContextDispatcher dispatcher, Writer writer)
+ {
+ RendererFactory factory = new RendererFactoryImpl(this, serviceInfo, info);
+
+ //
+ return new WriterRenderContext(factory, dispatcher, markupInfo, new PrintWriter(writer));
+ }
+
public void render(RenderContext renderContext, PageRenderContext prc) throws RenderException
{
PageResult pageResult = (PageResult)prc;
Added: trunk/theme/src/main/org/jboss/portal/theme/impl/JSPRenderContext.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/JSPRenderContext.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/JSPRenderContext.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -0,0 +1,63 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.theme.impl;
+
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.render.RendererFactory;
+import org.jboss.portal.theme.render.ObjectRenderContext;
+import org.jboss.portal.theme.render.RenderException;
+import org.jboss.portal.web.ServletContextDispatcher;
+import org.jboss.portal.common.util.MarkupInfo;
+
+import java.io.PrintWriter;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class JSPRenderContext extends RenderContext
+{
+
+ /** The writer provided by the JSP tag lib, the tag lib will flush the writer at the right time. */
+ private PrintWriter writer;
+
+ public JSPRenderContext(RendererFactory rendererFactory, ServletContextDispatcher dispatcher, MarkupInfo markupInfo)
+ {
+ super(rendererFactory, dispatcher, markupInfo);
+ }
+
+ public PrintWriter getWriter()
+ {
+ return writer;
+ }
+
+ public void setWriter(PrintWriter writer)
+ {
+ this.writer = writer;
+ }
+
+ public void render(ObjectRenderContext ctx) throws RenderException, IllegalStateException
+ {
+ super.render(ctx);
+ }
+}
Added: trunk/theme/src/main/org/jboss/portal/theme/impl/WriterRenderContext.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/WriterRenderContext.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/WriterRenderContext.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -0,0 +1,68 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.theme.impl;
+
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.render.RendererFactory;
+import org.jboss.portal.theme.render.ObjectRenderContext;
+import org.jboss.portal.theme.render.RenderException;
+import org.jboss.portal.web.ServletContextDispatcher;
+import org.jboss.portal.common.util.MarkupInfo;
+
+import java.io.PrintWriter;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class WriterRenderContext extends RenderContext
+{
+
+ /** The provided writer by the caller of the rendering process. */
+ private final PrintWriter writer;
+
+ public WriterRenderContext(
+ RendererFactory rendererFactory,
+ ServletContextDispatcher dispatcher,
+ MarkupInfo markupInfo,
+ PrintWriter writer)
+ {
+ super(rendererFactory, dispatcher, markupInfo);
+
+ //
+ this.writer = writer;
+ }
+
+ public PrintWriter getWriter()
+ {
+ return writer;
+ }
+
+ public void render(ObjectRenderContext ctx) throws RenderException, IllegalStateException
+ {
+ super.render(ctx);
+
+ //
+ writer.flush();
+ }
+}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivDecorationRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivDecorationRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivDecorationRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -37,6 +37,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.io.PrintWriter;
/**
* Implementation of a decoration renderer, based on div tags.
@@ -51,21 +52,21 @@
public void render(RenderContext renderContext, DecorationRenderContext drc) throws RenderException
{
- StringBuffer markup = renderContext.getMarkupFragment();
+ PrintWriter markup = renderContext.getWriter();
renderTitle(renderContext, drc);
- markup.append("<div class=\"portlet-mode-container\">");
+ markup.print("<div class=\"portlet-mode-container\">");
renderModeAndStateLinks(renderContext, drc, ActionRenderContext.MODES_KEY);
renderModeAndStateLinks(renderContext, drc, ActionRenderContext.WINDOWSTATES_KEY);
- markup.append("</div>");
+ markup.print("</div>");
}
private static void renderTitle(RenderContext ctx, DecorationRenderContext drc)
{
- StringBuffer out = ctx.getMarkupFragment();
- out.append("<div class=\"portlet-titlebar-decoration\">");
- out.append("<span class=\"portlet-titlebar-title\">");
- out.append(drc.getTitle());
- out.append("</span></div>");
+ PrintWriter out = ctx.getWriter();
+ out.print("<div class=\"portlet-titlebar-decoration\">");
+ out.print("<span class=\"portlet-titlebar-title\">");
+ out.print(drc.getTitle());
+ out.print("</span></div>");
}
private static void renderModeAndStateLinks(RenderContext ctx, DecorationRenderContext drc, String selector)
@@ -88,8 +89,14 @@
ActionRenderContext action = (ActionRenderContext)i.next();
if (action.isEnabled())
{
- StringBuffer out = ctx.getMarkupFragment();
- out.append("<span title=\"").append(action.getName()).append("\"><a class=\"portlet-mode-").append(action.getName()).append("\" href=\"").append(action.getURL()).append("\"> </a></span>");
+ PrintWriter out = ctx.getWriter();
+ out.print("<span title=\"");
+ out.print(action.getName());
+ out.print("\"><a class=\"portlet-mode-");
+ out.print(action.getName());
+ out.print("\" href=\"");
+ out.print(action.getURL());
+ out.print("\"> </a></span>");
}
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivPortletRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivPortletRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivPortletRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -27,6 +27,8 @@
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.render.PortletRenderContext;
+import java.io.PrintWriter;
+
/**
* Implementation of a Portlet renderer, based on div tags.
*
@@ -38,7 +40,7 @@
{
public void render(RenderContext renderContext, PortletRenderContext prc) throws RenderException
{
- StringBuffer out = renderContext.getMarkupFragment();
- out.append(prc.getMarkup());
+ PrintWriter out = renderContext.getWriter();
+ out.print(prc.getMarkup());
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivRegionRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivRegionRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -29,6 +29,7 @@
import org.jboss.portal.theme.render.WindowRenderContext;
import java.util.Iterator;
+import java.io.PrintWriter;
/**
* Implementation of a Region renderer, based on div tags.
@@ -44,16 +45,18 @@
public void renderHeader(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
{
- StringBuffer markup = renderContext.getMarkupFragment();
- markup.append("<div");
+ PrintWriter markup = renderContext.getWriter();
+ markup.print("<div");
if (rrc == null) // || region.getWindows().size() <= 0)
{
- markup.append(" class='empty-region' />");
+ markup.print(" class='empty-region' />");
}
else if (rrc.getCSSId() != null)
{
- markup.append(" id='").append(rrc.getCSSId()).append("'>");
+ markup.print(" id='");
+ markup.print(rrc.getCSSId());
+ markup.print("'>");
}
}
@@ -68,7 +71,7 @@
public void renderFooter(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
{
- StringBuffer markup = renderContext.getMarkupFragment();
- markup.append("</div>");
+ PrintWriter markup = renderContext.getWriter();
+ markup.print("</div>");
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivWindowRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivWindowRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/div/DivWindowRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -27,6 +27,8 @@
import org.jboss.portal.theme.render.WindowRenderer;
import org.jboss.portal.theme.render.WindowRenderContext;
+import java.io.PrintWriter;
+
/**
* Implementation of a WindowRenderer, based on div tags.
*
@@ -39,26 +41,26 @@
{
public void render(RenderContext renderContext, WindowRenderContext wrc) throws RenderException
{
- StringBuffer out = renderContext.getMarkupFragment();
- out.append("<div class=\"portlet-container\">");
- out.append("<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
+ PrintWriter out = renderContext.getWriter();
+ out.print("<div class=\"portlet-container\">");
+ out.print("<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
//
- out.append("<tr><td class=\"portlet-titlebar-left\"></td>");
- out.append("<td class=\"portlet-titlebar-center\">");
+ out.print("<tr><td class=\"portlet-titlebar-left\"></td>");
+ out.print("<td class=\"portlet-titlebar-center\">");
renderContext.render(wrc.getDecoration());
- out.append("</td><td class=\"portlet-titlebar-right\"></td></tr>");
+ out.print("</td><td class=\"portlet-titlebar-right\"></td></tr>");
//
- out.append("<tr><td class=\"portlet-content-left\"></td>");
- out.append("<td class=\"portlet-body\"><div class=\"portlet-content-center\">");
+ out.print("<tr><td class=\"portlet-content-left\"></td>");
+ out.print("<td class=\"portlet-body\"><div class=\"portlet-content-center\">");
renderContext.render(wrc.getPortlet());
- out.append("</div></td><td class=\"portlet-content-right\"></td></tr>");
+ out.print("</div></td><td class=\"portlet-content-right\"></td></tr>");
//
- out.append("<tr><td class=\"portlet-footer-left\"></td>");
- out.append("<td class=\"portlet-footer-center\"></td>");
- out.append("<td class=\"portlet-footer-right\"></td></tr>");
- out.append("</table></div>");
+ out.print("<tr><td class=\"portlet-footer-left\"></td>");
+ out.print("<td class=\"portlet-footer-center\"></td>");
+ out.print("<td class=\"portlet-footer-right\"></td></tr>");
+ out.print("</table></div>");
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaDecorationRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -27,6 +27,8 @@
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.render.DecorationRenderContext;
+import java.io.PrintWriter;
+
/**
* Implementation of a drag and drop decoration renderer.
*
@@ -55,12 +57,12 @@
DynaWindowRenderer.handleProvided.set(Boolean.TRUE);
//
- StringBuffer markup = renderContext.getMarkupFragment();
- markup.append("<div class=\"dyna-decoration\">\n");
- markup.append("<div class=\"handle\">");
+ PrintWriter markup = renderContext.getWriter();
+ markup.print("<div class=\"dyna-decoration\">\n");
+ markup.print("<div class=\"handle\">");
delegate.render(renderContext, drc);
- markup.append("</div>\n");
- markup.append("</div>\n");
+ markup.print("</div>\n");
+ markup.print("</div>\n");
}
else
{
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaPortletRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -28,6 +28,8 @@
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.render.PortletRenderContext;
+import java.io.PrintWriter;
+
/**
* Implementation of a drag and drop Portlet renderer.
*
@@ -85,10 +87,10 @@
{
if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
{
- StringBuffer out = renderContext.getMarkupFragment();
- out.append("<div class=\"dyna-portlet\">");
+ PrintWriter out = renderContext.getWriter();
+ out.print("<div class=\"dyna-portlet\">");
delegate.render(renderContext, prc);
- out.append("</div>");
+ out.print("</div>");
}
else
{
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaRegionRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -50,6 +50,8 @@
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.render.RegionRenderContext;
+import java.io.PrintWriter;
+
/**
* Implementation of a drag and drop Region renderer.
*
@@ -73,7 +75,7 @@
public void renderHeader(RenderContext renderContext, RegionRenderContext rrc) throws RenderException
{
- StringBuffer markup = renderContext.getMarkupFragment();
+ PrintWriter markup = renderContext.getWriter();
String jsBase = renderContext.getProperty(DynaConstants.JAVASCRIPT_BASE);
String asyncServerURL = renderContext.getProperty(DynaConstants.ASYNC_SERVER_URL);
String viewState = renderContext.getProperty(DynaConstants.VIEW_STATE);
@@ -89,28 +91,42 @@
// Handle special ajax region here
if ("AJAXScripts".equals(rrc.getId()))
{
- markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/prototype.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/scriptaculous.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/effects.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/dragdrop.js'></script>\n");
- markup.append("<script type='text/javascript' src='").append(jsBase).append("/js/portal/dyna.js'></script>\n");
- markup.append("<script type='text/javascript'>\n");
+ markup.print("<script type='text/javascript' src='");
+ markup.print(jsBase);
+ markup.print("/js/portal/prototype.js'></script>\n");
+ markup.print("<script type='text/javascript' src='");
+ markup.print(jsBase);
+ markup.print("/js/portal/scriptaculous.js'></script>\n");
+ markup.print("<script type='text/javascript' src='");
+ markup.print(jsBase);
+ markup.print("/js/portal/effects.js'></script>\n");
+ markup.print("<script type='text/javascript' src='");
+ markup.print(jsBase);
+ markup.print("/js/portal/dragdrop.js'></script>\n");
+ markup.print("<script type='text/javascript' src='");
+ markup.print(jsBase);
+ markup.print("/js/portal/dyna.js'></script>\n");
+ markup.print("<script type='text/javascript'>\n");
// Async server URL needed for callbacks
- markup.append("async_server_url=\"").append(asyncServerURL).append("\";\n");
+ markup.print("async_server_url=\"");
+ markup.print(asyncServerURL);
+ markup.print("\";\n");
// View state if not null
if (viewState != null)
{
- markup.append("view_state=\"").append(viewState).append("\";\n");
+ markup.print("view_state=\"");
+ markup.print(viewState);
+ markup.print("\";\n");
}
//
- markup.append("</script>\n");
+ markup.print("</script>\n");
}
else if ("AJAXFooter".equals(rrc.getId()))
{
- markup.append("<script type='text/javascript'>footer()</script>\n");
+ markup.print("<script type='text/javascript'>footer()</script>\n");
}
else
{
@@ -129,7 +145,9 @@
delegate.renderHeader(renderContext, rrc);
// We need height and width otherwise the region will not be usable when empty
- markup.append("<div class=\"dyna-region\" style=\"height:200px;width=200px\" id=\"").append(rrc.getId()).append("\">");
+ markup.print("<div class=\"dyna-region\" style=\"height:200px;width=200px\" id=\"");
+ markup.print(rrc.getId());
+ markup.print("\">");
}
else
{
@@ -142,10 +160,10 @@
//
if (Boolean.TRUE == renderContext.getAttribute(DynaConstants.AJAX_WINDOW_ENABLED))
{
- StringBuffer markup = renderContext.getMarkupFragment();
+ PrintWriter markup = renderContext.getWriter();
//
- markup.append("</div>");
+ markup.print("</div>");
}
//
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/dynamic/DynaWindowRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -28,6 +28,8 @@
import org.jboss.portal.theme.render.WindowRenderer;
import org.jboss.portal.theme.render.WindowRenderContext;
+import java.io.PrintWriter;
+
/**
* Implementation of a drag and drop WindowRenderer.
*
@@ -60,10 +62,12 @@
handleProvided.set(Boolean.FALSE);
//
- StringBuffer out = renderContext.getMarkupFragment();
- out.append("<div class=\"dyna-window\"><div id=\"").append(wrc.getId()).append("\"/>\n");
+ PrintWriter out = renderContext.getWriter();
+ out.print("<div class=\"dyna-window\"><div id=\"");
+ out.print(wrc.getId());
+ out.print("\"/>\n");
delegate.render(renderContext, wrc);
- out.append("</div></div>\n");
+ out.print("</div></div>\n");
//
handleProvided.set(null);
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyPortletRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyPortletRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyPortletRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -39,6 +39,6 @@
{
public void render(RenderContext renderContext, PortletRenderContext prc) throws RenderException
{
- renderContext.getMarkupFragment().append(prc.getMarkup());
+ renderContext.getWriter().print(prc.getMarkup());
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyRegionRenderer.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/empty/EmptyRegionRenderer.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -67,7 +67,6 @@
{
WindowRenderContext window = (WindowRenderContext)i.next();
orderedItems.put(new Integer(window.getOrder()), window);
- log.debug("got window to render: " + window.getId());
}
//
Modified: trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
+import java.io.PrintWriter;
/**
* A render context to render a context on a page. <p>A render context is scoped to a MarkupContainer (a region, or a
@@ -38,7 +39,7 @@
* @author <a href="mailto:mholzner@novell.com>Martin Holzner</a>
* @version $LastChangedRevision$, $LastChangedDate$
*/
-public final class RenderContext
+public abstract class RenderContext
{
/** . */
@@ -48,9 +49,6 @@
private ServletContextDispatcher dispatcher;
/** . */
- private StringBuffer markup;
-
- /** . */
private MarkupInfo markupInfo;
/** . */
@@ -85,20 +83,16 @@
this.dispatcher = dispatcher;
this.markupInfo = markupInfo;
this.stack = new ArrayList(6);
- this.markup = new StringBuffer();
this.attributes = new HashMap();
}
+ public abstract PrintWriter getWriter();
+
public ServletContextDispatcher getDispatcher()
{
return dispatcher;
}
- public StringBuffer getMarkupFragment()
- {
- return markup;
- }
-
public MarkupInfo getMarkupInfo()
{
return markupInfo;
@@ -163,7 +157,7 @@
return (ObjectRenderContext)stack.remove(stack.size() - 1);
}
- public void render(ObjectRenderContext ctx) throws RenderException
+ public void render(ObjectRenderContext ctx) throws RenderException, IllegalStateException
{
pushObjectRenderContext(ctx);
Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/HeaderContentTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/HeaderContentTagHandler.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/HeaderContentTagHandler.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -59,8 +59,7 @@
if (page == null)
{
out.write("<p bgcolor='red'>No page to render!</p>");
- out.write("<p bgcolor='red'>The page to render (PageResult) must be set in the request attribute '" +
- LayoutConstants.ATTR_PAGE + "'</p>");
+ out.write("<p bgcolor='red'>The page to render (PageResult) must be set in the request attribute '" + LayoutConstants.ATTR_PAGE + "'</p>");
out.flush();
return;
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -25,7 +25,7 @@
import org.jboss.logging.Logger;
import org.jboss.portal.theme.LayoutConstants;
import org.jboss.portal.theme.Orientation;
-import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.theme.impl.JSPRenderContext;
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.render.RegionRenderContext;
import org.jboss.portal.theme.render.PageRenderContext;
@@ -36,6 +36,7 @@
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
+import java.io.PrintWriter;
import java.util.Collection;
import java.util.Collections;
@@ -122,26 +123,23 @@
}
};
- RenderContext renderContext = (RenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ JSPRenderContext renderContext = (JSPRenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
try
{
+ PrintWriter pw = new PrintWriter(out);
+ renderContext.setWriter(pw);
renderContext.render(rrc);
- out.write(renderContext.getMarkupFragment().toString());
- out.flush();
+ pw.flush();
}
catch (RenderException e)
{
throw new JspException(e);
}
- finally
- {
- renderContext.getMarkupFragment().setLength(0);
- }
}
else
{
// window-centric display of content
- RenderContext renderContext = (RenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ JSPRenderContext renderContext = (JSPRenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
if (renderContext == null)
{
log.debug("no render context available in request");
@@ -178,18 +176,15 @@
};
try
{
+ PrintWriter pw = new PrintWriter(out);
+ renderContext.setWriter(pw);
renderContext.render(rrc);
- out.write(renderContext.getMarkupFragment().toString());
- out.flush();
+ pw.flush();
}
catch (RenderException e)
{
throw new JspException(e);
}
- finally
- {
- renderContext.getMarkupFragment().setLength(0);
- }
log.debug("done rendering page region [" + regionName + "]");
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java 2007-04-06 14:30:52 UTC (rev 6934)
@@ -76,10 +76,6 @@
public void doTag() throws JspException, IOException
{
boolean trace = log.isTraceEnabled();
- if (trace)
- {
- log.trace("rendering theme ...");
- }
// get page and region
PageContext app = (PageContext)getJspContext();
Modified: trunk/theme/src/resources/test/theme-test-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/theme/src/resources/test/theme-test-sar/META-INF/jboss-service.xml 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/resources/test/theme-test-sar/META-INF/jboss-service.xml 2007-04-06 14:30:52 UTC (rev 6934)
@@ -62,6 +62,15 @@
<attribute name="ConfigLocation">conf/config.xml</attribute>
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -70,6 +79,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server deployer -->
Deleted: trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-layouts.xml
===================================================================
--- trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-layouts.xml 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-layouts.xml 2007-04-06 14:30:52 UTC (rev 6934)
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ JBoss, a division of Red Hat ~
- ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
- ~ contributors as indicated by the @authors tag. See the ~
- ~ copyright.txt in the distribution for a full listing of ~
- ~ individual contributors. ~
- ~ ~
- ~ 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. ~
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<layouts>
- <!--
- <layout>
- <name>nodesk</name>
- <uri>/nodesk/index.jsp</uri>
- <uri state="maximized">/nodesk/index.jsp</uri>
- <regions>
- <region name="left"/>
- <region name="center"/>
- </regions>
- </layout>
- <layout>
- <name>phalanx</name>
- <uri>/phalanx/index.jsp</uri>
- <uri state="maximized">/phalanx/index.jsp</uri>
- <regions>
- <region name="left"/>
- <region name="center"/>
- </regions>
- </layout>
- -->
- <layout>
- <name>generic</name>
- <uri>/layouts/generic/index.jsp</uri>
- <uri state="maximized">/layouts/generic/maximized.jsp</uri>
- <regions>
- <region name="left"/>
- <region name="center"/>
- <region name="navigation"/>
- </regions>
- </layout>
-</layouts>
Deleted: trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-themes.xml
===================================================================
--- trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/resources/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-06 14:30:52 UTC (rev 6934)
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ JBoss, a division of Red Hat ~
- ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
- ~ contributors as indicated by the @authors tag. See the ~
- ~ copyright.txt in the distribution for a full listing of ~
- ~ individual contributors. ~
- ~ ~
- ~ 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. ~
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<themes>
- <!--
- <theme>
- <name>industrial</name>
- <link rel="stylesheet" id="main_css" href="/themes/industrial/portal_style.css" type="text/css" />
- <link rel="shortcut icon" href="/themes/industrial/images/favicon.ico" />
- </theme>
- <theme>
- <name>Nphalanx</name>
- <link rel="stylesheet" id="main_css" href="/themes/phalanx/portal_style.css" type="text/css" />
- <link rel="shortcut icon" href="/themes/phalanx/images/favicon.ico" />
- </theme>
- <theme>
- <name>mission-critical</name>
- <link rel="stylesheet" id="main_css" href="/themes/mission-critical/portal_style.css" type="text/css" />
- <link rel="shortcut icon" href="/themes/mission-critical/images/favicon.ico" />
- </theme>
- <theme>
- <name>Maple</name>
- <link rel="stylesheet" id="main_css" href="/themes/maple/portal_style.css" type="text/css"/>
- <link rel="shortcut icon" href="/themes/maple/images/favicon.ico"/>
- </theme>
- -->
- <theme>
- <name>renaissance</name>
- <link rel="stylesheet" id="main_css" href="/themes/renaissance/portal_style.css" type="text/css"/>
- <link rel="shortcut icon" href="/themes/renaissance/images/favicon.ico"/>
- <link rel="icon" href="/themes/renaissance/images/animated_favicon1.gif" type="image/gif"/>
- </theme>
-</themes>
\ No newline at end of file
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 2007-04-05 22:19:51 UTC (rev 6933)
+++ trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml 2007-04-06 14:30:52 UTC (rev 6934)
@@ -37,17 +37,13 @@
</servlet>
<servlet>
<description>Renders a theme for testing</description>
- <servlet-name>TestThemeServlet</servlet-name>
- <servlet-class>org.jboss.portal.test.theme.tmp.servlet.TestThemeServlet</servlet-class>
+ <servlet-name>TestServlet</servlet-name>
+ <servlet-class>org.jboss.portal.test.theme.TestServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
- <servlet-name>TestAJAXServlet</servlet-name>
- <url-pattern>/testajax/*</url-pattern>
+ <servlet-name>TestServlet</servlet-name>
+ <url-pattern>/test/*</url-pattern>
</servlet-mapping>
- <servlet-mapping>
- <servlet-name>TestThemeServlet</servlet-name>
- <url-pattern>/testtheme/*</url-pattern>
- </servlet-mapping>
</web-app>
17 years, 3 months
JBoss Portal SVN: r6933 - in trunk: core/src/main/org/jboss/portal/core/model/portal/command and 5 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-05 18:19:51 -0400 (Thu, 05 Apr 2007)
New Revision: 6933
Modified:
trunk/core/src/main/org/jboss/portal/core/model/instance/command/InvokePortletInstanceRenderCommand.java
trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java
trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java
trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java
trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java
Log:
don't set on PageResult both layoutState and layoutURI. LayoutURI can be deduced from the layoutState (which is the real intention) + the layout object just before doing the request dispatching to the layout servlet. Furthermore layoutURI is an internal implementation detail of the fact that the layouting of the different regions is done primarily by a JSP
Modified: trunk/core/src/main/org/jboss/portal/core/model/instance/command/InvokePortletInstanceRenderCommand.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/model/instance/command/InvokePortletInstanceRenderCommand.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/core/src/main/org/jboss/portal/core/model/instance/command/InvokePortletInstanceRenderCommand.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -108,15 +108,11 @@
windowProps.put(ThemeConstants.PORTAL_PROP_PORTLET_RENDERER, "emptyRenderer");
//
- WindowResult res = new WindowResult("", content, Collections.EMPTY_MAP, windowProps, null, null, WindowState.NORMAL, Mode.VIEW);
+ WindowResult res = new WindowResult("", content, Collections.EMPTY_MAP, windowProps, null, null, WindowState.MAXIMIZED, Mode.VIEW);
WindowContext blah = new WindowContext("BILTO", "BILTO", "maximized", 0, res);
result.addWindowContext(blah);
//
- result.setLayoutState("maximized");
- result.setLayoutURI(layout.getLayoutInfo().getURI("maximized"));
-
- //
return new PageRendition(layout, result, ps);
}
catch (PortletInvokerException e)
Modified: trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -203,9 +203,6 @@
new HashMap(getPage().getDeclaredProperties()),
new HashMap(getPage().getPortal().getDeclaredProperties()));
- // Set the layout uri
- pageResult.setLayoutURI(layout.getLayoutInfo().getURI());
-
// Set the theme on the result
if (theme != null)
{
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -96,7 +96,6 @@
pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_LAYOUT, layout.getLayoutInfo().getName());
pageRenderCtx.setLayoutState(null);
- pageRenderCtx.setLayoutURI(layout.getLayoutInfo().getURI("maximized"));
//
for (int i = 0; i < 2; i++)
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -141,7 +141,6 @@
// pageresult obj
PageResult pageResult = new PageResult(TEST_PAGE_NAME, pageProps, portalProps);
- pageResult.setLayoutURI(layout.getLayoutInfo().getURI());
pageResult.setTheme(theme);
// create window ctx/results and add to page result
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -108,7 +108,6 @@
// pageresult obj
PageResult pageResult = new PageResult(TEST_PAGE_NAME, pageProps, portalProps);
- pageResult.setLayoutURI(layout.getLayoutInfo().getURI());
pageResult.setTheme(theme);
// create window ctx/results and add to page result
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -104,7 +104,6 @@
// pageResult = newRes;
pageResult.setLayoutState("maximized");
- pageResult.setLayoutURI(getLayoutInfo().getURI("maximized"));
wc.setRegionName("maximized");
wc.setOrder(0);
break;
@@ -116,8 +115,9 @@
try
{
-
- LayoutDispatcher dispatcher = new LayoutDispatcher(renderContext, prc, pageResult.getLayoutURI(), getLayoutInfo());
+ String layoutState = pageResult.getLayoutState();
+ String layoutURI = getLayoutInfo().getURI(layoutState);
+ LayoutDispatcher dispatcher = new LayoutDispatcher(renderContext, prc, layoutURI, getLayoutInfo());
dispatcher.include();
}
catch (IOException e)
Modified: trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java 2007-04-05 22:06:33 UTC (rev 6932)
+++ trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java 2007-04-05 22:19:51 UTC (rev 6933)
@@ -60,9 +60,6 @@
protected Map pageProperties;
/** . */
- protected String layoutURI;
-
- /** . */
protected String layoutState;
/** . */
@@ -142,17 +139,6 @@
}
/**
- * Get the uri of the layout that is used. <p>The uri is relative to the application context that hosts the
- * layout.</p>
- *
- * @return the uri of the used layout
- */
- public String getLayoutURI()
- {
- return layoutURI;
- }
-
- /**
* Get the state string of the layout. <p>The state is used to further sub select a layout uri. One layout can
* contain a separate layout uri per state. The state has to match to string version of one of the allowed window
* states.<p>
@@ -164,6 +150,11 @@
return layoutState;
}
+ public void setLayoutState(String layoutState)
+ {
+ this.layoutState = layoutState;
+ }
+
/**
* Get a Set of all window ids that are contained in this page.
*
@@ -200,16 +191,6 @@
return windowContexts;
}
- public void setLayoutURI(String uri)
- {
- layoutURI = uri;
- }
-
- public void setLayoutState(String layoutState)
- {
- this.layoutState = layoutState;
- }
-
public void addWindowContext(WindowContext windowContext)
{
windowContexts.put(windowContext.getId(), windowContext);
17 years, 3 months
JBoss Portal SVN: r6932 - in trunk: theme/src/main/org/jboss/portal/theme and 3 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-05 18:06:33 -0400 (Thu, 05 Apr 2007)
New Revision: 6932
Removed:
trunk/theme/src/main/org/jboss/portal/theme/ThemeResult.java
Modified:
trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java
trunk/theme/src/main/org/jboss/portal/theme/PortalTheme.java
trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java
trunk/theme/src/main/org/jboss/portal/theme/impl/WARTheme.java
trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java
trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java
trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java
Log:
simplify theme header rendering
Modified: trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/core/src/main/org/jboss/portal/core/model/portal/command/RenderPageCommand.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -44,7 +44,6 @@
import org.jboss.portal.theme.PortalTheme;
import org.jboss.portal.theme.ServerRegistrationID;
import org.jboss.portal.theme.ThemeConstants;
-import org.jboss.portal.theme.ThemeResult;
import org.jboss.portal.theme.ThemeService;
import org.jboss.portal.theme.PageService;
import org.jboss.portal.theme.page.PageResult;
@@ -158,8 +157,11 @@
{
//
PageService pageService = context.getController().getPageService();
+
+ // The theme for the page
PortalTheme theme = null;
+ //
if (personalizable)
{
ControllerContext controllerCtx = (ControllerContext)getContext();
@@ -178,9 +180,7 @@
// Name is not bound anymore, it could happen during a shutdown, we don't do anything
}
-
- //String themeId = user.getTheme();
-
+ //
String themeId = (String)userProfileModule.getProperty(user, User.INFO_USER_THEME);
if (themeId != null)
@@ -198,12 +198,21 @@
}
// Call the portlet container to create the markup fragment(s) for each portlet that needs to render itself
- PageResult pageResult = new PageResult(getPage().getName(), new HashMap(getPage().getDeclaredProperties()), new HashMap(getPage().getPortal().getDeclaredProperties()));
+ PageResult pageResult = new PageResult(
+ getPage().getName(),
+ new HashMap(getPage().getDeclaredProperties()),
+ new HashMap(getPage().getPortal().getDeclaredProperties()));
// Set the layout uri
pageResult.setLayoutURI(layout.getLayoutInfo().getURI());
- // Render
+ // Set the theme on the result
+ if (theme != null)
+ {
+ pageResult.setTheme(theme);
+ }
+
+ // Render the windows
for (Iterator i = windows.iterator(); i.hasNext();)
{
PortalObject o = (PortalObject)i.next();
@@ -250,17 +259,8 @@
}
}
- // Make the theme available as servlet request attribute (needed for CM)
- if (theme != null)
- {
- // Render the theme markup and place it into the request so that the markup assembler (theme tag) can pick it up there
- ThemeResult themeResult = theme.assembleResponse(sinv.getRequest(), sinv.getResponse());
- pageResult.setTheme(theme);
- pageResult.setThemeResult(themeResult);
-
- //
- return new PageRendition(layout, pageResult, pageService);
- }
+ //
+ return new PageRendition(layout, pageResult, pageService);
}
catch (Exception e)
{
@@ -268,9 +268,8 @@
}
finally
{
- request.removeAttribute(ThemeConstants.ATTR_THEMESERVER);
+ request.removeAttribute(ThemeConstants.ATTR_THEME_SERVER);
request.removeAttribute(ThemeConstants.ATTR_THEME);
- request.removeAttribute(ThemeConstants.ATTR_THEMERESULT);
}
//
Modified: trunk/theme/src/main/org/jboss/portal/theme/PortalTheme.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/PortalTheme.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/PortalTheme.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -22,12 +22,8 @@
******************************************************************************/
package org.jboss.portal.theme;
-import org.jboss.portal.server.ServerRequest;
-import org.jboss.portal.server.ServerResponse;
+import java.util.Collection;
-import java.io.IOException;
-import java.io.Writer;
-
/**
* A portal theme is a collection of tags that will be injected into a layout to govern the look and feel of a portal
* page. <p>Themes are links to css, javascript and image/resource files. A theme's css needs to cooperate with the
@@ -50,25 +46,9 @@
{
}
- /**
- * create the markup that this theme wants to inject into the page
- *
- * @param request the current server request
- * @param response the current server response
- * @return a ThemeResult containing the markup to inject into the page
- * @throws IOException
- */
- public abstract ThemeResult assembleResponse(ServerRequest request, ServerResponse response) throws IOException;
+ public abstract Collection getElements();
/**
- * create the markup that this theme wants to inject into the page, and write it to the provided writer
- *
- * @param writer the writer to write the theme markup to
- * @throws IOException
- */
- public abstract void assembleResponse(Writer writer) throws IOException;
-
- /**
* Initialize the theme with a reference to the theme service and the theme meta data
*
* @param serviceInfo a theme service reference
Modified: trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/ThemeConstants.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -38,11 +38,8 @@
public static final String ATTR_THEME = "THEME";
/** Request attribute to propagate the theme service */
- public static final String ATTR_THEMESERVER = "THEMESERVER";
+ public static final String ATTR_THEME_SERVER = "THEMESERVER";
- /** Request attribute to propagate the rendered markup of the theme */
- public static final String ATTR_THEMERESULT = "THEMERESULT";
-
// Portal property keys
/** Key name to access the selected layout for the portal or page (via the portal or page properties) */
Deleted: trunk/theme/src/main/org/jboss/portal/theme/ThemeResult.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/ThemeResult.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/ThemeResult.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -1,56 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * 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.jboss.portal.theme;
-
-/**
- * The resulting markup of a theme assembly. <p>A theme consists of zero or more links and scripts that together form
- * the markup to be injected into the head of the page. This result object holds the rendered markup of the theme that
- * can be written into the page.</p>
- *
- * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
- * @version $Revision$
- */
-public final class ThemeResult
-{
- private final String themeName;
- private final StringBuffer markup;
-
- public ThemeResult(String themeName, StringBuffer markup)
- {
- this.themeName = themeName;
- this.markup = markup;
- }
-
- /** @return the theme markup to inject */
- public StringBuffer getMarkup()
- {
- return markup;
- }
-
- /** @return the name of the theme that produced the markup */
- public String getThemeName()
- {
- return themeName;
- }
-}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/WARTheme.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/WARTheme.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/WARTheme.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -23,17 +23,9 @@
package org.jboss.portal.theme.impl;
-import org.jboss.portal.server.ServerRequest;
-import org.jboss.portal.server.ServerResponse;
import org.jboss.portal.theme.PortalTheme;
-import org.jboss.portal.theme.ThemeElement;
-import org.jboss.portal.theme.ThemeResult;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.List;
+import java.util.Collection;
/**
* A theme implementation that gets its resources from a war file.
@@ -43,33 +35,8 @@
*/
public final class WARTheme extends PortalTheme
{
- /** @ see PortalTheme#assembleResponse(ServerRequest, ServerResponse) */
- public ThemeResult assembleResponse(ServerRequest request, ServerResponse response)
+ public Collection getElements()
{
- StringWriter out = new StringWriter();
- PrintWriter writer = new PrintWriter(out);
- List themeElements = getThemeInfo().getElements();
- for (Iterator i = themeElements.iterator(); i.hasNext();)
- {
- ThemeElement el = (ThemeElement)i.next();
- writer.println(el.getElement());
- }
- writer.flush();
- StringBuffer markup = out.getBuffer();
- return new ThemeResult(getThemeInfo().getName(), markup);
+ return getThemeInfo().getElements();
}
-
- /** @ see PortalTheme#assembleResponse(Writer) */
- public void assembleResponse(Writer writer)
- {
- PrintWriter buffer = new PrintWriter(writer);
-
- List themeElements = getThemeInfo().getElements();
- for (Iterator i = themeElements.iterator(); i.hasNext();)
- {
- ThemeElement el = (ThemeElement)i.next();
- buffer.println(el.getElement());
- }
- buffer.flush();
- }
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -70,9 +70,8 @@
{
// Place a reference to the theme service into the request so that the theme tag can get to a theme via a theme
// name (specified as tag attribute); this is useful if no theme was defined for the portal or the page
- renderContext.setAttribute(ThemeConstants.ATTR_THEMESERVER, pageService.getThemeService());
+ renderContext.setAttribute(ThemeConstants.ATTR_THEME_SERVER, pageService.getThemeService());
renderContext.setAttribute(ThemeConstants.ATTR_THEME, pageResult.getTheme());
- renderContext.setAttribute(ThemeConstants.ATTR_THEMERESULT, pageResult.getThemeResult());
//
renderContext.render(pageResult);
@@ -83,9 +82,8 @@
}
finally
{
- renderContext.setAttribute(ThemeConstants.ATTR_THEMESERVER, null);
+ renderContext.setAttribute(ThemeConstants.ATTR_THEME_SERVER, null);
renderContext.setAttribute(ThemeConstants.ATTR_THEME, null);
- renderContext.setAttribute(ThemeConstants.ATTR_THEMERESULT, null);
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -26,7 +26,6 @@
import org.jboss.portal.theme.render.PageRenderContext;
import org.jboss.portal.theme.render.RegionRenderContext;
import org.jboss.portal.theme.render.WindowRenderContext;
-import org.jboss.portal.theme.ThemeResult;
import org.jboss.portal.theme.PortalTheme;
import java.util.HashMap;
@@ -70,9 +69,6 @@
protected PortalRenderSet renderSet;
/** . */
- protected ThemeResult themeResult;
-
- /** . */
protected PortalTheme theme;
/** . */
@@ -94,16 +90,6 @@
this(pageName, new HashMap(), new HashMap());
}
- public ThemeResult getThemeResult()
- {
- return themeResult;
- }
-
- public void setThemeResult(ThemeResult themeResult)
- {
- this.themeResult = themeResult;
- }
-
public PortalTheme getTheme()
{
return theme;
Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java 2007-04-05 21:12:38 UTC (rev 6931)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java 2007-04-05 22:06:33 UTC (rev 6932)
@@ -25,9 +25,9 @@
import org.jboss.logging.Logger;
import org.jboss.portal.theme.PortalTheme;
import org.jboss.portal.theme.ThemeConstants;
-import org.jboss.portal.theme.ThemeResult;
import org.jboss.portal.theme.ThemeServiceInfo;
import org.jboss.portal.theme.LayoutConstants;
+import org.jboss.portal.theme.ThemeElement;
import org.jboss.portal.theme.render.RenderContext;
import javax.servlet.http.HttpServletRequest;
@@ -36,6 +36,7 @@
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
+import java.util.Iterator;
/**
* Tag handler for the theme tag. <p>The theme tag injects theme resource links into the page. Themes are CSS files, and
@@ -52,7 +53,11 @@
public class ThemeTagHandler
extends SimpleTagSupport
{
+
+ /** . */
private static Logger log = Logger.getLogger(ThemeTagHandler.class);
+
+ /** . */
private String themeName;
/**
@@ -65,7 +70,7 @@
* @throws JspException
* @throws IOException
* @see org.jboss.portal.theme.ThemeConstants#ATTR_THEME
- * @see org.jboss.portal.theme.ThemeConstants#ATTR_THEMESERVER
+ * @see org.jboss.portal.theme.ThemeConstants#ATTR_THEME_SERVER
* @see org.jboss.portal.theme.PortalTheme
*/
public void doTag() throws JspException, IOException
@@ -80,73 +85,27 @@
PageContext app = (PageContext)getJspContext();
HttpServletRequest request = (HttpServletRequest)app.getRequest();
+ // Get the theme provided as a render context attribute
RenderContext renderContext = (RenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ PortalTheme theme = (PortalTheme)renderContext.getAttribute(ThemeConstants.ATTR_THEME);
+ ThemeServiceInfo themeServer = (ThemeServiceInfo)renderContext.getAttribute(ThemeConstants.ATTR_THEME_SERVER);
- ThemeResult result = (ThemeResult)renderContext.getAttribute(ThemeConstants.ATTR_THEMERESULT);
-
- // was the result already prepared for us (in the MarkupCommand)?
- if (result != null)
+ // If no theme provided we use what may be on the tag
+ if (theme == null && themeServer != null && themeName != null && themeName.length() > 0)
{
- if (trace)
- {
- log.trace("Got valid theme result to render: " + result.getThemeName());
- }
- JspWriter out = this.getJspContext().getOut();
- out.println(result.getMarkup().toString());
- out.flush();
+ theme = themeServer.getTheme(getThemeName(), false);
}
- else
+
+ //
+ if (theme != null)
{
- // no, then perhaps the theme was provided
- PortalTheme theme = (PortalTheme)renderContext.getAttribute(ThemeConstants.ATTR_THEME);
- if (theme == null && getThemeName() != null && !"".equals(getThemeName()))
+ JspWriter out = this.getJspContext().getOut();
+ for (Iterator i = theme.getElements().iterator(); i.hasNext();)
{
- // if there is no theme in the request, see if we have one via a tag attribute
- // which we treat as the default
- if (trace)
- {
- log.trace("requested theme not found. Is there a theme attribute in the tag ? " + getThemeName());
- }
-
- // but in order to get the theme for the provided name, we need the theme service
- ThemeServiceInfo themeServer = (ThemeServiceInfo)renderContext.getAttribute(ThemeConstants.ATTR_THEMESERVER);
-
- if (themeServer == null)
- {
- return;
- }
-
- if (trace)
- {
- log.trace("Found theme server");
- }
-
- theme = themeServer.getTheme(getThemeName(), false);
+ ThemeElement el = (ThemeElement)i.next();
+ out.println(el.getElement());
}
-
- if (theme == null)
- {
- if (trace)
- {
- log.trace("No valid theme to render: " + themeName + " [" + getThemeName() + "]");
- }
- return;
- }
-
- if (trace)
- {
- log.trace("Found valid theme to render: " + theme.getThemeInfo().getName());
- }
-
- JspWriter out = this.getJspContext().getOut();
- theme.assembleResponse(out);
- out.flush();
}
-
- if (trace)
- {
- log.trace("done rendering theme");
- }
}
// ----- attribute handlers
17 years, 3 months
JBoss Portal SVN: r6931 - trunk/wsrp/src/main/org/jboss/portal/wsrp/servlet.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2007-04-05 17:12:38 -0400 (Thu, 05 Apr 2007)
New Revision: 6931
Modified:
trunk/wsrp/src/main/org/jboss/portal/wsrp/servlet/ReleaseSessionsSessionListener.java
Log:
- Now implements PortalEventListener and uses Portal-level events.
- Still needs to be wired as a service...
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/servlet/ReleaseSessionsSessionListener.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/servlet/ReleaseSessionsSessionListener.java 2007-04-05 21:10:04 UTC (rev 6930)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/servlet/ReleaseSessionsSessionListener.java 2007-04-05 21:12:38 UTC (rev 6931)
@@ -23,35 +23,31 @@
package org.jboss.portal.wsrp.servlet;
-// import org.jboss.portal.core.event.SessionEventListenerRegistry;
+import org.jboss.portal.api.event.PortalEvent;
+import org.jboss.portal.api.event.PortalEventListener;
+import org.jboss.portal.api.user.event.UserSessionEvent;
import org.jboss.portal.wsrp.consumer.ProducerSessionInformation;
import org.jboss.portal.wsrp.handler.RequestHeaderClientHandler;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
-
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
* @version $Revision$
* @since 2.6
*/
-public class ReleaseSessionsSessionListener implements HttpSessionListener
+public class ReleaseSessionsSessionListener implements PortalEventListener
{
private static ThreadLocal local = new ThreadLocal();
private static final String ID = "ReleaseSessionsSessionListener";
- public void sessionCreated(HttpSessionEvent httpSessionEvent)
+ public void sessionCreated(String id)
{
// do nothing when the session is created
- System.out.println("Session created: " + httpSessionEvent.getSession().getId());
- local.set(httpSessionEvent.getSession().getId());
+ System.out.println("Session created: " + id);
+ local.set(id);
}
- public void sessionDestroyed(HttpSessionEvent httpSessionEvent)
+ public void sessionDestroyed(String id)
{
- HttpSession session = httpSessionEvent.getSession();
- String id = session.getId();
System.out.println("Session destroyed: " + id);
// check if the session being destroyed is the one associated with this thread
@@ -61,18 +57,28 @@
ProducerSessionInformation producerSessionInfo = RequestHeaderClientHandler.getCurrentProducerSessionInformation();
if (producerSessionInfo != null)
{
- producerSessionInfo.releaseSession(id);
+ producerSessionInfo.removeSession(id);
}
}
}
- public void start()
+ public void onEvent(PortalEvent event)
{
-// SessionEventListenerRegistry.registerListener(ID, this);
+ if (event instanceof UserSessionEvent)
+ {
+ UserSessionEvent use = (UserSessionEvent)event;
+ int type = use.getType();
+ switch (type)
+ {
+ case UserSessionEvent.SESSION_CREATED:
+ sessionCreated(use.getRuntimeContext().getSession().getId());
+ break;
+ case UserSessionEvent.SESSION_DESTROYED:
+ sessionDestroyed(use.getRuntimeContext().getSession().getId());
+ break;
+ default:
+ throw new RuntimeException("Unexpected event: " + event);
+ }
+ }
}
-
- public void stop()
- {
-// SessionEventListenerRegistry.unregisterListener(ID);
- }
}
17 years, 3 months
JBoss Portal SVN: r6930 - trunk/build.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-05 17:10:04 -0400 (Thu, 05 Apr 2007)
New Revision: 6930
Modified:
trunk/build/build.xml
Log:
adding web module into build
Modified: trunk/build/build.xml
===================================================================
--- trunk/build/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
+++ trunk/build/build.xml 2007-04-05 21:10:04 UTC (rev 6930)
@@ -113,6 +113,7 @@
<module name="common"/>
<module name="test"/>
+ <module name="web"/>
<module name="jems"/>
<module name="security"/>
<module name="faces"/>
@@ -142,15 +143,15 @@
<group name="portal">
<include
- modules="common, test, api, jems, server, security, identity, search, format, portlet, portlet-server, bridge, faces, portlet-federation, theme, workflow, cms, samples, registration, core, wsrp, core-admin, core-cms, core-management, core-samples"/>
+ modules="common, test, api, web, jems, server, security, identity, search, format, portlet, portlet-server, bridge, faces, portlet-federation, theme, workflow, cms, samples, registration, core, wsrp, core-admin, core-cms, core-management, core-samples"/>
</group>
<group name="cms">
- <include modules="common, test, jems, workflow, cms"/>
+ <include modules="common, test, web, jems, workflow, cms"/>
</group>
<group name="security">
- <include modules="common, test, jems, security"/>
+ <include modules="common, test, web, jems, security"/>
</group>
<group name="default">
17 years, 3 months
JBoss Portal SVN: r6929 - in trunk: build/ide/intellij/idea60/modules and 49 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-05 17:05:42 -0400 (Thu, 05 Apr 2007)
New Revision: 6929
Added:
trunk/build/ide/intellij/idea60/modules/web/
trunk/build/ide/intellij/idea60/modules/web/web.iml
trunk/server/src/main/org/jboss/portal/web/
trunk/server/src/main/org/jboss/portal/web/jboss/
trunk/server/src/main/org/jboss/portal/web/jboss/JBossWebContext.java
trunk/theme/src/bin/test/theme-test-war/WEB-INF/
trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-layouts.xml
trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml
trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml
trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
trunk/web/
trunk/web/build.bat
trunk/web/build.sh
trunk/web/build.xml
trunk/web/src/
trunk/web/src/main/
trunk/web/src/main/org/
trunk/web/src/main/org/jboss/
trunk/web/src/main/org/jboss/portal/
trunk/web/src/main/org/jboss/portal/web/
trunk/web/src/main/org/jboss/portal/web/RequestDispatchCallback.java
trunk/web/src/main/org/jboss/portal/web/ServletContextDispatcher.java
trunk/web/src/main/org/jboss/portal/web/spi/
trunk/web/src/main/org/jboss/portal/web/spi/ServletContainerContext.java
trunk/web/src/resources/
Removed:
trunk/portlet-server/src/main/org/jboss/portal/web/jboss/
trunk/portlet/src/main/org/jboss/portal/web/spi/RequestDispatchCallback.java
trunk/portlet/src/main/org/jboss/portal/web/spi/ServletContainerContext.java
trunk/theme/src/bin/test/theme-test-war/themes/renaissance/
Modified:
trunk/build/ide/intellij/idea60/modules/core/core.iml
trunk/build/ide/intellij/idea60/modules/theme/theme.iml
trunk/core/build.xml
trunk/core/src/main/org/jboss/portal/core/controller/Controller.java
trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java
trunk/core/src/main/org/jboss/portal/core/controller/classic/ClassicResponseHandler.java
trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml
trunk/portlet-server/build.xml
trunk/portlet-server/src/resources/test-sar/META-INF/jboss-service.xml
trunk/portlet/build.xml
trunk/portlet/src/main/org/jboss/portal/portlet/aspects/portlet/ContextDispatcherInterceptor.java
trunk/portlet/src/main/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java
trunk/portlet/src/main/org/jboss/portal/portlet/spi/RequestContext.java
trunk/server/build.xml
trunk/server/src/main/org/jboss/portal/server/Server.java
trunk/server/src/main/org/jboss/portal/server/impl/ServerImpl.java
trunk/server/src/resources/portal-server-sar/META-INF/jboss-service.xml
trunk/server/src/resources/test/test-charset-sar/META-INF/jboss-service.xml
trunk/server/src/resources/test/test-parameters-sar/META-INF/jboss-service.xml
trunk/server/src/resources/test/test-response-sar/META-INF/jboss-service.xml
trunk/server/src/resources/test/test-servlet-sar/META-INF/jboss-service.xml
trunk/theme/build.xml
trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp
trunk/theme/src/bin/test/theme-test-war/layouts/generic/maximized.jsp
trunk/theme/src/main/org/jboss/portal/theme/LayoutDispatcher.java
trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java
trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java
trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java
trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java
trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java
trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java
trunk/tools/etc/buildfragments/modules.ent
trunk/wsrp/build.xml
trunk/wsrp/src/resources/tests/test-wsrp-producer-sar/META-INF/jboss-service.xml
Log:
extract the servlet container spi into a 'web' module. it will probably contains different implementations in the future
Modified: trunk/build/ide/intellij/idea60/modules/core/core.iml
===================================================================
--- trunk/build/ide/intellij/idea60/modules/core/core.iml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/build/ide/intellij/idea60/modules/core/core.iml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -269,6 +269,7 @@
<SOURCES />
</library>
</orderEntry>
+ <orderEntry type="module" module-name="web" />
<orderEntryProperties />
</component>
<component name="VcsManagerConfiguration">
Modified: trunk/build/ide/intellij/idea60/modules/theme/theme.iml
===================================================================
--- trunk/build/ide/intellij/idea60/modules/theme/theme.iml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/build/ide/intellij/idea60/modules/theme/theme.iml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -96,6 +96,7 @@
</library>
</orderEntry>
<orderEntry type="module" module-name="jems" />
+ <orderEntry type="module" module-name="web" />
<orderEntryProperties />
</component>
<component name="VcsManagerConfiguration">
Added: trunk/build/ide/intellij/idea60/modules/web/web.iml
===================================================================
--- trunk/build/ide/intellij/idea60/modules/web/web.iml (rev 0)
+++ trunk/build/ide/intellij/idea60/modules/web/web.iml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="true" type="JAVA_MODULE">
+ <component name="ModuleRootManager" />
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$/../../../../../../web">
+ <sourceFolder url="file://$MODULE_DIR$/../../../../../../web/src/main" isTestSource="false" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/../../../../../../thirdparty/sun-servlet/lib/servlet-api.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntryProperties />
+ </component>
+</module>
+
Modified: trunk/core/build.xml
===================================================================
--- trunk/core/build.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/core/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -122,6 +122,7 @@
<path id="dependentmodule.classpath">
<path refid="jboss.portal-format.classpath"/>
<path refid="jboss.portal-common.classpath"/>
+ <path refid="jboss.portal-web.classpath"/>
<path refid="jboss.portal-server.classpath"/>
<path refid="jboss.portal-registration.classpath"/>
<path refid="jboss.portal-portlet.classpath"/>
@@ -319,6 +320,7 @@
<fileset dir="${build.lib}" includes="jboss-portlet-api-lib.jar"/>
<fileset dir="${jboss.portal-format.root}/lib" includes="portal-format-lib.jar"/>
<fileset dir="${jboss.portal-common.root}/lib" includes="portal-common-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portal-bridge.root}/lib" includes="portal-bridge-lib.jar"/>
<fileset dir="${jboss.portal-server.root}/lib" includes="portal-server-lib.jar"/>
<fileset dir="${jboss.portal-portlet.root}/lib" includes="portal-portlet-lib.jar"/>
Modified: trunk/core/src/main/org/jboss/portal/core/controller/Controller.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/Controller.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/core/src/main/org/jboss/portal/core/controller/Controller.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -37,6 +37,7 @@
import org.jboss.portal.server.ServerException;
import org.jboss.portal.server.ServerURL;
import org.jboss.portal.server.request.URLContext;
+import org.jboss.portal.web.spi.ServletContainerContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -81,6 +82,9 @@
/** . */
protected ResponseHandler responseHandler;
+ /** . */
+ protected ServletContainerContext servletContainerContext;
+
public ContentRendererRegistry getContentRendererRegistry()
{
return contentRendererRegistry;
@@ -181,6 +185,11 @@
this.responseHandler = responseHandler;
}
+ public ServletContainerContext getServletContainerContext()
+ {
+ return servletContainerContext;
+ }
+
public final void handle(ServerInvocation invocation) throws ServerException
{
// Invoke the chain that creates the initial command
Modified: trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/core/src/main/org/jboss/portal/core/controller/ajax/AjaxResponseHandler.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -52,6 +52,7 @@
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.WindowState;
import org.jboss.portal.Mode;
+import org.jboss.portal.web.ServletContextDispatcher;
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.theme.impl.render.dynamic.response.UpdatePageLocationResponse;
import org.jboss.portal.theme.impl.render.dynamic.response.UpdatePageStateResponse;
@@ -297,7 +298,8 @@
MarkupInfo markupInfo = (MarkupInfo)invocation.getResponse().getContentInfo();
//
- RenderContext renderContext = layout.getRenderContext(markupInfo, invocation);
+ ServletContextDispatcher dispatcher = new ServletContextDispatcher(invocation.getServerContext().getClientRequest(), invocation.getServerContext().getClientResponse(), controllerContext.getController().getServletContainerContext());
+ RenderContext renderContext = layout.getRenderContext(markupInfo, dispatcher);
// Should push region context as well
renderContext.setAttribute(DynaConstants.AJAX_WINDOW_ENABLED, Boolean.TRUE);
Modified: trunk/core/src/main/org/jboss/portal/core/controller/classic/ClassicResponseHandler.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/classic/ClassicResponseHandler.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/core/src/main/org/jboss/portal/core/controller/classic/ClassicResponseHandler.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -43,6 +43,8 @@
import org.jboss.portal.core.model.portal.PortalObjectId;
import org.jboss.portal.core.model.portal.PortalObjectResponseHandler;
import org.jboss.portal.core.model.portal.command.RenderPageCommand;
+import org.jboss.portal.web.ServletContextDispatcher;
+import org.jboss.portal.common.util.MarkupInfo;
import javax.servlet.ServletException;
import java.io.IOException;
@@ -113,7 +115,9 @@
{
public void sendResponse(ServerInvocationContext ctx) throws IOException, ServletException
{
- rendition.render(invocation);
+ ServletContextDispatcher dispatcher = new ServletContextDispatcher(invocation.getServerContext().getClientRequest(), invocation.getServerContext().getClientResponse(), invocation.getRequest().getServer().getServletContainerContext());
+ MarkupInfo markupInfo = (MarkupInfo)invocation.getResponse().getContentInfo();
+ rendition.render(markupInfo, dispatcher);
}
};
}
Modified: trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -1020,6 +1020,9 @@
<depends
optional-attribute-name="Config"
proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends
+ optional-attribute-name="ServletContainerContext"
+ proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- -->
Modified: trunk/portlet/build.xml
===================================================================
--- trunk/portlet/build.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -108,6 +108,7 @@
<call target="configure-modules"/>
<path id="dependentmodule.classpath">
<path refid="jboss.portal-common.classpath"/>
+ <path refid="jboss.portal-web.classpath"/>
<path refid="jboss.portlet-api.classpath"/>
<path refid="jboss.portal-test.classpath"/>
</path>
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/aspects/portlet/ContextDispatcherInterceptor.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/portlet/aspects/portlet/ContextDispatcherInterceptor.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet/src/main/org/jboss/portal/portlet/aspects/portlet/ContextDispatcherInterceptor.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -27,7 +27,7 @@
import org.jboss.portal.portlet.container.PortletContainer;
import org.jboss.portal.portlet.container.PortletContainerInvoker;
import org.jboss.portal.web.spi.ServletContainerContext;
-import org.jboss.portal.web.spi.RequestDispatchCallback;
+import org.jboss.portal.web.RequestDispatchCallback;
import org.jboss.portal.portlet.impl.jsr168.info.ContainerPortletInfo;
import org.jboss.portal.portlet.invocation.PortletInterceptor;
import org.jboss.portal.portlet.invocation.PortletInvocation;
@@ -73,7 +73,7 @@
private static final RequestDispatchCallback callback = new RequestDispatchCallback()
{
- public Object doCallback(HttpServletRequest req, HttpServletResponse resp, Object handback) throws Exception
+ public Object doCallback(ServletContext dispatchedServletContext, HttpServletRequest req, HttpServletResponse resp, Object handback) throws Exception
{
PortletInvocation invocation = (PortletInvocation)handback;
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet/src/main/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -24,7 +24,7 @@
import org.jboss.portal.portlet.spi.RequestContext;
import org.jboss.portal.web.spi.ServletContainerContext;
-import org.jboss.portal.web.spi.RequestDispatchCallback;
+import org.jboss.portal.web.RequestDispatchCallback;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -78,6 +78,6 @@
public Object dispatch(ServletContainerContext scc, ServletContext targetCtx, RequestDispatchCallback callback, Object handback) throws Exception
{
- return scc.dispatch(req, resp, targetCtx, callback, handback);
+ return scc.include(targetCtx, req, resp, callback, handback);
}
}
Modified: trunk/portlet/src/main/org/jboss/portal/portlet/spi/RequestContext.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/portlet/spi/RequestContext.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet/src/main/org/jboss/portal/portlet/spi/RequestContext.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -23,10 +23,8 @@
package org.jboss.portal.portlet.spi;
import org.jboss.portal.web.spi.ServletContainerContext;
-import org.jboss.portal.web.spi.RequestDispatchCallback;
+import org.jboss.portal.web.RequestDispatchCallback;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
/**
Deleted: trunk/portlet/src/main/org/jboss/portal/web/spi/RequestDispatchCallback.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/web/spi/RequestDispatchCallback.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet/src/main/org/jboss/portal/web/spi/RequestDispatchCallback.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -1,46 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * 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.jboss.portal.web.spi;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Callback contract.
- *
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 1.1 $
- */
-public interface RequestDispatchCallback
-{
- /**
- * Called by the runtime context when request dispatching has been done.
- *
- * @param dispatchedRequest the dispatched request
- * @param dispatchedResponse the dispatched response
- * @param handback the handback object provided to the dispatched
- * @return any object
- * @throws Exception any exception
- */
- Object doCallback(HttpServletRequest dispatchedRequest, HttpServletResponse dispatchedResponse, Object handback) throws Exception;
-}
Deleted: trunk/portlet/src/main/org/jboss/portal/web/spi/ServletContainerContext.java
===================================================================
--- trunk/portlet/src/main/org/jboss/portal/web/spi/ServletContainerContext.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet/src/main/org/jboss/portal/web/spi/ServletContainerContext.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -1,54 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * 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.jboss.portal.web.spi;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.ServletContext;
-
-/**
- * Defines the service provider interface that a servlet container offers.
- *
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 1.1 $
- */
-public interface ServletContainerContext
-{
- /**
- * Generic detyped request dispatch to a servlet context.
- *
- * @param request the request valid in the current servlet context
- * @param response the response valid in the current servlet context
- * @param targetServletContext the target servlet context to dispatch to
- * @param callback the callback to perform after the dispatch operation
- * @param handback the handback object to provide
- * @return any object
- * @throws Exception any exception
- */
- Object dispatch(
- HttpServletRequest request,
- HttpServletResponse response,
- ServletContext targetServletContext,
- RequestDispatchCallback callback,
- Object handback) throws Exception;
-}
Modified: trunk/portlet-server/build.xml
===================================================================
--- trunk/portlet-server/build.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet-server/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -108,6 +108,7 @@
<call target="configure-modules"/>
<path id="dependentmodule.classpath">
<path refid="jboss.portal-common.classpath"/>
+ <path refid="jboss.portal-web.classpath"/>
<path refid="jboss.portal-jems.classpath"/>
<path refid="jboss.portal-security.classpath"/>
<path refid="jboss.portal-server.classpath"/>
@@ -203,8 +204,10 @@
<fileset dir="${jboss.portal-security.root}/lib" includes="portal-security-lib.jar"/>
<fileset dir="${jboss.portal-portlet.root}/lib" includes="portal-portlet-lib.jar"/>
<fileset dir="${jboss.portal-portlet.root}/lib" includes="portal-portlet-test-framework-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portlet-api.root}/lib" includes="portlet-api-lib.jar"/>
<fileset dir="${jboss.portlet-api.root}/lib" includes="portal-api-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${junit.junit.lib}" includes="junit.jar"/>
<fileset dir="${build.lib}" includes="portal-portlet-server-lib.jar"/>
<fileset dir="${build.lib}" includes="test.war"/>
@@ -228,6 +231,7 @@
<fileset dir="${jboss.portal-portlet.root}/lib" includes="portal-portlet-test-framework-lib.jar"/>
<fileset dir="${jboss.portal-portlet.root}/lib" includes="test-info.jar"/>
<fileset dir="${jboss.portal-portlet.root}/lib" includes="test-info.war"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portal-server.lib}" includes="test-agent.war"/>
<fileset dir="${build.lib}" includes="portal-portlet-server-lib.jar"/>
<fileset dir="${build.resources}/test/info/test-info-sar"/>
Modified: trunk/portlet-server/src/resources/test-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/portlet-server/src/resources/test-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/portlet-server/src/resources/test-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -54,15 +54,6 @@
<depends optional-attribute-name="TestDriverRegistry" proxy-type="attribute">portal.test:service=HttpTestDriverServer</depends>
</mbean>
- <!-- Runtime context for running portlet container -->
- <mbean
- code="org.jboss.portal.web.jboss.JBossWebContext"
- name="portal:service=ServletContainerContext"
- xmbean-dd=""
- xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
- <xmbean/>
- </mbean>
-
<!-- Server stack -->
<mbean
code="org.jboss.portal.server.aspects.server.LocaleInterceptor"
@@ -339,6 +330,15 @@
<attribute name="ConfigLocation">conf/config.xml</attribute>
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -347,6 +347,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server deployer -->
Modified: trunk/server/build.xml
===================================================================
--- trunk/server/build.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -113,6 +113,7 @@
<call target="configure-modules"/>
<path id="dependentmodule.classpath">
<path refid="jboss.portal-common.classpath"/>
+ <path refid="jboss.portal-web.classpath"/>
<path refid="jboss.portal-jems.classpath"/>
<path refid="jboss.portal-test.classpath"/>
</path>
@@ -197,6 +198,7 @@
<fileset dir="${jboss.portal-test.root}/lib" includes="portal-test-lib.jar"/>
<fileset dir="${jboss.portal-common.root}/lib" includes="portal-common-lib.jar"/>
<fileset dir="${jboss.portal-jems.root}/lib" includes="portal-jems-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${build.lib}" includes="test-agent.war"/>
<fileset dir="${build.lib}" includes="portal-server-lib.jar"/>
<fileset dir="${build.lib}" includes="portal-server-test-lib.jar"/>
@@ -217,6 +219,7 @@
<fileset dir="${junit.junit.lib}" includes="junit.jar"/>
<fileset dir="${jboss.portal-test.root}/lib" includes="portal-test-lib.jar"/>
<fileset dir="${jboss.portal-common.root}/lib" includes="portal-common-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portal-jems.root}/lib" includes="portal-jems-lib.jar"/>
<fileset dir="${build.lib}" includes="test-agent.war"/>
<fileset dir="${build.lib}" includes="portal-server-lib.jar"/>
@@ -232,6 +235,7 @@
<fileset dir="${junit.junit.lib}" includes="junit.jar"/>
<fileset dir="${jboss.portal-test.root}/lib" includes="portal-test-lib.jar"/>
<fileset dir="${jboss.portal-common.root}/lib" includes="portal-common-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portal-jems.root}/lib" includes="portal-jems-lib.jar"/>
<fileset dir="${build.lib}" includes="test-agent.war"/>
<fileset dir="${build.lib}" includes="portal-server-lib.jar"/>
@@ -245,6 +249,7 @@
<fileset dir="${jboss.portal-test.root}/lib" includes="portal-test-lib.jar"/>
<fileset dir="${jboss.portal-common.root}/lib" includes="portal-common-lib.jar"/>
<fileset dir="${jboss.portal-jems.root}/lib" includes="portal-jems-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${build.lib}" includes="test-agent.war"/>
<fileset dir="${build.lib}" includes="portal-server-lib.jar"/>
<fileset dir="${build.lib}" includes="portal-server-test-lib.jar"/>
Modified: trunk/server/src/main/org/jboss/portal/server/Server.java
===================================================================
--- trunk/server/src/main/org/jboss/portal/server/Server.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/main/org/jboss/portal/server/Server.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -24,6 +24,7 @@
import org.jboss.portal.common.util.Version;
import org.jboss.portal.server.config.ServerConfig;
+import org.jboss.portal.web.spi.ServletContainerContext;
/**
* The portal server.
@@ -33,9 +34,24 @@
*/
public interface Server
{
- /** Return the config of this server. */
+ /**
+ * Returns the config of this server.
+ *
+ * @return the config
+ **/
ServerConfig getConfig();
- /** Return the server version. */
+ /**
+ * Return the server version.
+ *
+ * @return the version
+ */
Version getVersion();
+
+ /**
+ * Returns the servlet container context of the server.
+ *
+ * @return the servlet container context
+ */
+ ServletContainerContext getServletContainerContext();
}
Modified: trunk/server/src/main/org/jboss/portal/server/impl/ServerImpl.java
===================================================================
--- trunk/server/src/main/org/jboss/portal/server/impl/ServerImpl.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/main/org/jboss/portal/server/impl/ServerImpl.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -26,6 +26,7 @@
import org.jboss.portal.server.PortalConstants;
import org.jboss.portal.server.Server;
import org.jboss.portal.server.config.ServerConfig;
+import org.jboss.portal.web.spi.ServletContainerContext;
/**
* Should bootstrap the microcontainer in the (near) future.
@@ -35,9 +36,13 @@
*/
public class ServerImpl implements Server
{
+
/** The global server config. */
private ServerConfig config;
+ /** . */
+ private ServletContainerContext servletContainerContext;
+
public ServerConfig getConfig()
{
return config;
@@ -52,4 +57,14 @@
{
return PortalConstants.VERSION;
}
+
+ public ServletContainerContext getServletContainerContext()
+ {
+ return servletContainerContext;
+ }
+
+ public void setServletContainerContext(ServletContainerContext servletContainerContext)
+ {
+ this.servletContainerContext = servletContainerContext;
+ }
}
Added: trunk/server/src/main/org/jboss/portal/web/jboss/JBossWebContext.java
===================================================================
--- trunk/server/src/main/org/jboss/portal/web/jboss/JBossWebContext.java (rev 0)
+++ trunk/server/src/main/org/jboss/portal/web/jboss/JBossWebContext.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,144 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.web.jboss;
+
+import org.jboss.portal.server.servlet.CommandServlet;
+import org.jboss.portal.server.servlet.ServletCommand;
+import org.jboss.portal.web.spi.ServletContainerContext;
+import org.jboss.portal.web.RequestDispatchCallback;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * JBossWeb implementation of the spi.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBossWebContext implements ServletContainerContext
+{
+
+ /** . */
+ private static final ThreadLocal localResponse = new ThreadLocal();
+
+ public Object include(
+ ServletContext targetServletContext,
+ HttpServletRequest req,
+ HttpServletResponse resp,
+ RequestDispatchCallback callback,
+ Object handback) throws Exception
+ {
+ try
+ {
+ //
+ ServletCommand cmd = new InvokeNextCommand(targetServletContext, callback, handback);
+
+ //
+ CommandServlet.include(req, resp, cmd, targetServletContext);
+
+ // Rethrow any InvocationException
+ Object response = localResponse.get();
+
+ //
+ if (response instanceof Exception)
+ {
+ throw (Exception)response;
+ }
+ else
+ {
+ return response;
+ }
+ }
+ catch (IOException e)
+ {
+ throw e;
+ }
+ catch (ServletException e)
+ {
+ // Unwrap underlying exception if any
+ Throwable t = e.getRootCause();
+
+ //
+ if (t instanceof Error)
+ {
+ // Rethrow any error
+ throw(Error)t;
+ }
+ else if (t instanceof RuntimeException)
+ {
+ throw (RuntimeException)t;
+ }
+ else if (t instanceof Exception)
+ {
+ throw (Exception)t;
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ finally
+ {
+ localResponse.set(null);
+ }
+ }
+
+ public static class InvokeNextCommand implements ServletCommand
+ {
+
+ /** . */
+ private final ServletContext servletContext;
+
+ /** . */
+ private final RequestDispatchCallback invocation;
+
+ /** . */
+ private final Object handback;
+
+ public InvokeNextCommand(ServletContext servletContext, RequestDispatchCallback invocation, Object handback)
+ {
+ this.servletContext = servletContext;
+ this.invocation = invocation;
+ this.handback = handback;
+ }
+
+ public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ try
+ {
+ Object response = invocation.doCallback(servletContext, req, resp, handback);
+
+ //
+ localResponse.set(response);
+ }
+ catch (Exception e)
+ {
+ localResponse.set(e);
+ }
+ }
+ }
+}
Modified: trunk/server/src/resources/portal-server-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/server/src/resources/portal-server-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/resources/portal-server-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -33,6 +33,15 @@
<attribute name="ConfigLocation">conf/config.xml</attribute>
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -41,6 +50,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server deployer -->
Modified: trunk/server/src/resources/test/test-charset-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/server/src/resources/test/test-charset-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/resources/test/test-charset-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -54,6 +54,15 @@
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -62,6 +71,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server stack -->
Modified: trunk/server/src/resources/test/test-parameters-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/server/src/resources/test/test-parameters-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/resources/test/test-parameters-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -53,6 +53,15 @@
<attribute name="ConfigLocation">conf/config.xml</attribute>
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -61,6 +70,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server stack -->
Modified: trunk/server/src/resources/test/test-response-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/server/src/resources/test/test-response-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/resources/test/test-response-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -53,6 +53,15 @@
<attribute name="ConfigLocation">conf/config.xml</attribute>
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -61,6 +70,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server stack -->
Modified: trunk/server/src/resources/test/test-servlet-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/server/src/resources/test/test-servlet-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/server/src/resources/test/test-servlet-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -53,6 +53,15 @@
<attribute name="ConfigLocation">conf/config.xml</attribute>
</mbean>
+ <!-- Runtime context for running portlet container -->
+ <mbean
+ code="org.jboss.portal.web.jboss.JBossWebContext"
+ name="portal:service=ServletContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ </mbean>
+
<!-- Server -->
<mbean
code="org.jboss.portal.server.impl.ServerImpl"
@@ -61,6 +70,7 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends optional-attribute-name="Config" proxy-type="attribute">portal:service=ServerConfig</depends>
+ <depends optional-attribute-name="ServletContainerContext" proxy-type="attribute">portal:service=ServletContainerContext</depends>
</mbean>
<!-- Server stack -->
Modified: trunk/theme/build.xml
===================================================================
--- trunk/theme/build.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -109,6 +109,7 @@
<path id="dependentmodule.classpath">
<path refid="jboss.portlet-api.classpath"/>
<path refid="jboss.portal-common.classpath"/>
+ <path refid="jboss.portal-web.classpath"/>
<path refid="jboss.portal-jems.classpath"/>
<path refid="jboss.portal-server.classpath"/>
<path refid="jboss.portal-portlet.classpath"/>
Added: trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-layouts.xml
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-layouts.xml (rev 0)
+++ trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-layouts.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<layouts>
+ <layout>
+ <name>generic</name>
+ <uri>/layouts/generic/index.jsp</uri>
+ <uri state="maximized">/layouts/generic/maximized.jsp</uri>
+ <regions>
+ <region name="left"/>
+ <region name="center"/>
+ <region name="navigation"/>
+ </regions>
+ </layout>
+</layouts>
Added: trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml (rev 0)
+++ trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-renderSet.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<portal-renderSet>
+ <renderSet name="divRenderer">
+ <set content-type="text/html">
+ <ajax-enabled>true</ajax-enabled>
+ <region-renderer>org.jboss.portal.theme.impl.render.div.DivRegionRenderer</region-renderer>
+ <window-renderer>org.jboss.portal.theme.impl.render.div.DivWindowRenderer</window-renderer>
+ <portlet-renderer>org.jboss.portal.theme.impl.render.div.DivPortletRenderer</portlet-renderer>
+ <decoration-renderer>org.jboss.portal.theme.impl.render.div.DivDecorationRenderer</decoration-renderer>
+ </set>
+ </renderSet>
+ <renderSet name="emptyRenderer">
+ <set content-type="text/html">
+ <ajax-enabled>true</ajax-enabled>
+ <region-renderer>org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer</region-renderer>
+ <window-renderer>org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer</window-renderer>
+ <portlet-renderer>org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer</portlet-renderer>
+ <decoration-renderer>org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer</decoration-renderer>
+ </set>
+ </renderSet>
+ <renderSet name="ajaxDivRenderer">
+ <set content-type="text/html">
+ <ajax-enabled>true</ajax-enabled>
+ <region-renderer>org.jboss.portal.theme.impl.render.div.DivRegionRenderer</region-renderer>
+ <window-renderer>org.jboss.portal.theme.impl.render.div.DivWindowRenderer</window-renderer>
+ <portlet-renderer>org.jboss.portal.theme.impl.render.div.DivPortletRenderer</portlet-renderer>
+ <decoration-renderer>org.jboss.portal.theme.impl.render.div.DivDecorationRenderer</decoration-renderer>
+ </set>
+ </renderSet>
+ <renderSet name="ajaxEmptyRenderer">
+ <set content-type="text/html">
+ <ajax-enabled>true</ajax-enabled>
+ <region-renderer>org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer</region-renderer>
+ <window-renderer>org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer</window-renderer>
+ <portlet-renderer>org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer</portlet-renderer>
+ <decoration-renderer>org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer</decoration-renderer>
+ </set>
+ </renderSet>
+</portal-renderSet>
Added: trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml (rev 0)
+++ trunk/theme/src/bin/test/theme-test-war/WEB-INF/portal-themes.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<themes>
+ <theme>
+ <name>empty</name>
+ </theme>
+</themes>
\ No newline at end of file
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 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/bin/test/theme-test-war/layouts/generic/index.jsp 2007-04-05 21:05:42 UTC (rev 6929)
@@ -1,147 +1,24 @@
-<%@ page import="org.jboss.portal.server.PortalConstants" %>
<%@ taglib uri="/WEB-INF/theme/portal-layout.tld" prefix="p" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <title><%= PortalConstants.VERSION.toString() %></title>
<meta http-equiv="Content-Type" content="text/html;"/>
- <!-- to correct the unsightly Flash of Unstyled Content. -->
- <script type="text/javascript"></script>
- <!-- 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 -->
- <!-- Script.aculo.us libraries -->
- <script type='text/javascript' src='js/portal/prototype.js'></script>
- <script type='text/javascript' src='js/portal/scriptaculous.js'></script>
- <script type='text/javascript' src='js/portal/dragdrop.js'></script>
-
- <!-- JSUnit library -->
- <script language="JavaScript" type="text/javascript" src="jsunit/app/jsUnitCore.js"></script>
-
- <!-- JSUnit Test Cases -->
- <script language="JavaScript" type="text/javascript">
- function setUp()
- {
- inform("setup");
- Sortable.create("regionA", {dropOnEmpty:true,tag:'div',containment:["regionA","regionB"],constraint:false, ghosting: false});
- Sortable.create("regionB", {dropOnEmpty:true,tag:'div',containment:["regionA","regionB"],constraint:false, ghosting: false});
- }
- function tearDown()
- {
- inform("teardown");
- Sortable.destroy("regionA");
- Sortable.destroy("regionB");
- }
- function testAJAXCall()
- {
- inform("testAJAXCall");
- windowID = 'WindowA_2';
- fromPos = '2';
- fromRegion = 'regionA';
- toPos = '1';
- toRegion = 'regionB';
-
- var options = {
- method: 'post',
- postBody: 'action=windowmove&windowID=' + windowID + '&fromPos=' + fromPos + '&fromRegion=' + fromRegion + '&toPos=' + toPos + '&toRegion=' + toRegion,
- onSuccess: function(t)
- {
- },
- onComplete: function(t)
- {
- assertEquals("AJAX Servlet response is incorrect", 'windowmove', document.getElementById("resp"));
- },
- on404: function(t)
- {
- fail("Unable to contact server for testing, 404");
- },
- onFailure: function(t)
- {
- fail("Unable to complete transaction.");
- },
- onLoading: function(t)
- {
- }
- }
-
- var url = "http://localhost:8080/test/testajax";
- new Ajax.Updater('resp', url, options);
- }
- function testSortableSwapRegions()
- {
- inform("testSortableSwapRegions");
-
- // TODO: need to hook in to scriptaculous APIs to test region-to-region window placement.
- }
- function testSortableSequence()
- {
- inform("testSortableSequence");
-
- var a = Sortable.sequence("regionA");
- var b = Sortable.sequence("regionB");
-
- Sortable.setSequence('regionA', ['0','1','2']);
- Sortable.setSequence('regionB', ['0','1','2']);
-
- // Test regionA sequence
- assertEquals("RegionA sequence incorrect", a[0], Sortable.sequence("regionA")[0]);
- assertEquals("RegionA sequence incorrect", a[1], Sortable.sequence("regionA")[1]);
- assertEquals("RegionA sequence incorrect", a[2], Sortable.sequence("regionA")[2]);
-
- // Test regionB sequence
- assertEquals("RegionB sequence incorrect", b[0], Sortable.sequence("regionB")[0]);
- assertEquals("RegionB sequence incorrect", b[1], Sortable.sequence("regionB")[1]);
- assertEquals("RegionB sequence incorrect", b[2], Sortable.sequence("regionB")[2]);
-
- // Shuffle and test regionA sequence
- Sortable.setSequence('regionA', ['2','1','0']);
-
- assertEquals("RegionA sequence (post-shuffle) incorrect", a[2], Sortable.sequence("regionA")[0]);
- assertEquals("RegionA sequence (post-shuffle) incorrect", a[1], Sortable.sequence("regionA")[1]);
- assertEquals("RegionA sequence (post-shuffle) incorrect", a[0], Sortable.sequence("regionA")[2]);
-
- // Shuffle and test regionB sequence
- Sortable.setSequence('regionB', ['1','0','2']);
- assertEquals("RegionB sequence (post-shuffle) incorrect", b[1], Sortable.sequence("regionB")[0]);
- assertEquals("RegionB sequence (post-shuffle) incorrect", b[0], Sortable.sequence("regionB")[1]);
- assertEquals("RegionB sequence (post-shuffle) incorrect", b[2], Sortable.sequence("regionB")[2]);
- }
- </script>
+ <p:theme themeName="renaissance"/>
+ <p:headerContent/>
</head>
-
<body id="body">
+<p:region regionName='AJAXScripts' regionID='AJAXScripts'/>
<div id="portal-container">
<div id="sizer">
<div id="expander">
- <div id="logoName"></div>
- <table border="0" cellpadding="0" cellspacing="0" id="header-container">
- <tr>
- <td align="center" valign="top" id="header">
-
- <!-- Utility controls -->
- <p:region regionName='UtilityNavigation' regionID='UtilityNavigation'/>
-
- <!-- navigation tabs and such -->
- <div id="spacer"></div>
- </td>
- </tr>
- </table>
<div id="content-container">
- <!-- insert the content of the 'left' region of the page, and assign the css selector id 'regionA' -->
<p:region regionName='left' regionID='regionA'/>
- <!-- insert the content of the 'center' region of the page, and assign the css selector id 'regionB' -->
<p:region regionName='center' regionID='regionB'/>
- <hr class="cleaner"/>
</div>
</div>
</div>
</div>
-
-<!-- for ajax callback jsunit tests -->
-<div id="resp"></div>
-
-<script type='text/javascript' src='js/portal/event.js'></script>
-
+<p:region regionName='AJAXFooter' regionID='AJAXFooter'/>
</body>
</html>
Modified: trunk/theme/src/bin/test/theme-test-war/layouts/generic/maximized.jsp
===================================================================
--- trunk/theme/src/bin/test/theme-test-war/layouts/generic/maximized.jsp 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/bin/test/theme-test-war/layouts/generic/maximized.jsp 2007-04-05 21:05:42 UTC (rev 6929)
@@ -1,42 +1,23 @@
-<%@ page import="org.jboss.portal.server.PortalConstants"%>
<%@ taglib uri="/WEB-INF/theme/portal-layout.tld" prefix="p" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <title><%= PortalConstants.VERSION.toString() %></title>
<meta http-equiv="Content-Type" content="text/html;"/>
- <!-- to correct the unsightly Flash of Unstyled Content. -->
- <script type="text/javascript"></script>
- <!-- use the Nphalanx theme if nothing else was defined for the portal or the page -->
- <p:theme themeName='Nphalanx'/>
- <!-- inject header content that was generated by the portlets on the requested page -->
+ <p:theme themeName="renaissance"/>
<p:headerContent/>
</head>
-
<body id="body">
-<div id="portal-container"><div id="sizer"><div id="expander">
- <div id="logoName"></div>
- <table border="0" cellpadding="0" cellspacing="0" id="header-container">
- <tr>
- <td align="center" valign="top" id="header">
- <p:region regionName='navigation' regionID='navigation'/>
- <div id="spacer"></div>
- </td>
- </tr>
- </table>
- <div id="content-container">
- <!-- Note: this construct assumes that the 'maximizedRegion' layout strategy was chosen for the layout, page or portal -->
- <!-- the 'maximizedRegion' strategy assigns the maximized portlet to the 'maximized' region -->
- <p:region regionName='maximized' regionID='regionMaximized'/>
- <hr class="cleaner"/>
-
- <div id="footer-container" class="portal-copyright">Powered by
- <a class="portal-copyright" href="http://www.jboss.com/products/jbossportal">JBoss Portal</a><br>
- <span id="ThemeBy"></span>
+<p:region regionName='AJAXScripts' regionID='AJAXScripts'/>
+<div id="portal-container">
+ <div id="sizer">
+ <div id="expander">
+ <div id="content-container">
+ <p:region regionName='maximized' regionID='regionMaximized'/>
+ </div>
</div>
</div>
-
-</div></div></div>
+</div>
+<p:region regionName='AJAXFooter' regionID='AJAXFooter'/>
</body>
</html>
Added: trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestServlet.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,149 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme;
+
+import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.mx.util.MBeanProxy;
+import org.jboss.portal.theme.LayoutService;
+import org.jboss.portal.theme.ThemeService;
+import org.jboss.portal.theme.PageService;
+import org.jboss.portal.theme.PortalLayout;
+import org.jboss.portal.theme.PortalTheme;
+import org.jboss.portal.theme.ThemeConstants;
+import org.jboss.portal.theme.page.PageResult;
+import org.jboss.portal.theme.page.WindowContext;
+import org.jboss.portal.theme.page.WindowResult;
+import org.jboss.portal.theme.impl.render.dynamic.DynaConstants;
+import org.jboss.portal.theme.render.PortalRenderSet;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.portal.common.util.MediaType;
+import org.jboss.portal.common.util.MarkupInfo;
+import org.jboss.portal.server.ServerRequest;
+import org.jboss.portal.test.theme.tmp.servlet.TestThemeServlet;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import java.io.IOException;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Collections;
+
+/** @author <a href="mailto:roy@jboss.org">Roy Russo</a> */
+
+public class TestServlet extends HttpServlet
+{
+
+ /**
+ * Generates a portal page with windows, using the theme api.
+ */
+ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+ {
+ try
+ {
+ proceed(request, response);
+ }
+ catch (Exception e)
+ {
+ throw new ServletException(e);
+ }
+ }
+
+ public void proceed(HttpServletRequest request, HttpServletResponse response) throws Exception
+ {
+ MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
+
+ // Get services
+ 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);
+
+ PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
+ PortalLayout layout = layoutService.getLayout("generic", true);
+ PortalTheme theme = themeService.getTheme("empty", true);
+
+ // Build a page structure
+ PageResult pageRenderCtx = new PageResult("test_page");
+
+ //
+ pageRenderCtx.getPageProperties().put(DynaConstants.JAVASCRIPT_BASE, "/portal-ajax");
+ pageRenderCtx.getPageProperties().put(DynaConstants.ASYNC_SERVER_URL, "http://localhost:8080/portal-ajax/ajax");
+
+ //
+ pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_THEME, theme.getThemeInfo().getName());
+ pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
+ pageRenderCtx.getPortalProperties().put(ThemeConstants.PORTAL_PROP_LAYOUT, layout.getLayoutInfo().getName());
+ pageRenderCtx.setLayoutState(null);
+ pageRenderCtx.setLayoutURI(layout.getLayoutInfo().getURI("maximized"));
+
+ //
+ for (int i = 0; i < 2; i++)
+ {
+ WindowContext wCtx = new WindowContext("WindowA_" + i, "WindowA_" + i, "left", i, createWindowMarkup("WindowA_" + i + " Title", "<p>WindowA_" + i + " Content</p>"));
+ pageRenderCtx.addWindowContext(wCtx);
+ }
+ for (int i = 0; i < 2; i++)
+ {
+ WindowContext wCtx = new WindowContext("WindowB_" + i, "WindowB_" + i, "center", i, createWindowMarkup("WindowB_" + i + " Title", "<p>WindowB_" + i + " Content</p>"));
+ pageRenderCtx.addWindowContext(wCtx);
+ }
+
+ //
+ MarkupInfo markupInfo = new MarkupInfo(MediaType.HTML, "utf-8");
+ RenderContext renderCtx = layout.getRenderContext(markupInfo, null);
+
+// //
+// ServerRequest serverRequest = new ServerRequest(null);
+//
+// // pageresult obj
+// PageResult pageResult = new PageResult(TEST_PAGE_NAME, pageProps, portalProps);
+// pageResult.setLayoutURI(layout.getLayoutInfo().getURI());
+// pageResult.setTheme(theme);
+//
+// // set the renderctx and req/res attr
+//// RenderContext renderCtx = new RenderContext(layout, markupInfo, pageResult);
+//// response.setContentType(renderCtx.getContentType().toString());
+//// response.setCharacterEncoding(renderCtx.getCharset());
+//// request.setAttribute(LayoutConstants.ATTR_RENDERCONTEXT, renderCtx);
+//// request.setAttribute(LayoutConstants.ATTR_PAGE, pageResult);
+//// request.setAttribute(ThemeConstants.ATTR_THEME, theme);
+//
+// //
+//// LayoutDispatcher dispatcher1 = new LayoutDispatcher(renderCtx, request, response, pageResult);
+//// dispatcher1.include();
+ }
+
+ /**
+ * Generates the WindowResult for our windowcontext
+ *
+ * @param sTitle
+ * @param sContent
+ * @return window markup result
+ */
+ private WindowResult createWindowMarkup(String sTitle, String sContent)
+ {
+ return new WindowResult(sTitle, sContent, Collections.EMPTY_MAP, new HashMap(), null, null, null, null);
+ }
+}
Modified: trunk/theme/src/main/org/jboss/portal/theme/LayoutDispatcher.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/LayoutDispatcher.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/LayoutDispatcher.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -22,13 +22,15 @@
******************************************************************************/
package org.jboss.portal.theme;
-import org.jboss.logging.Logger;
import org.jboss.portal.server.servlet.FilterCommand;
import org.jboss.portal.theme.render.RenderContext;
import org.jboss.portal.theme.render.PageRenderContext;
+import org.jboss.portal.web.ServletContextDispatcher;
+import org.jboss.portal.web.RequestDispatchCallback;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
@@ -42,13 +44,9 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision$
*/
-public final class LayoutDispatcher
+public final class LayoutDispatcher implements RequestDispatchCallback
{
- private static final Logger log = Logger.getLogger(LayoutDispatcher.class);
-
- private final HttpServletRequest request;
- private final HttpServletResponse response;
private final PageRenderContext markupResult;
private final RenderContext renderContext;
private final String layoutURI;
@@ -60,22 +58,12 @@
*/
public LayoutDispatcher(
RenderContext renderContext,
- HttpServletRequest request,
- HttpServletResponse response,
PageRenderContext result,
String layoutURI,
LayoutInfo layoutInfo)
throws IllegalArgumentException
{
- if (request == null)
- {
- throw new IllegalArgumentException("No null request allowed here");
- }
- if (response == null)
- {
- throw new IllegalArgumentException("No null response allowed here");
- }
if (result == null)
{
throw new IllegalArgumentException("No null response allowed here");
@@ -90,8 +78,6 @@
throw new IllegalArgumentException("No null layout allowed here");
}
- this.request = request;
- this.response = response;
this.markupResult = result;
this.renderContext = renderContext;
this.layoutURI = layoutURI;
@@ -102,25 +88,33 @@
{
try
{
+ ServletContextDispatcher dispatcher = renderContext.getDispatcher();
+ dispatcher.include(layoutInfo.getServletContext(), this, null);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public Object doCallback(ServletContext dispatchedServletContext, HttpServletRequest dispatchedRequest, HttpServletResponse dispatchedResponse, Object handback) throws Exception
+ {
+ try
+ {
// Set charset and content type on the response
- response.setContentType(renderContext.getContentType().toString());
- response.setCharacterEncoding(renderContext.getCharset());
+ dispatchedResponse.setContentType(renderContext.getContentType().toString());
+ dispatchedResponse.setCharacterEncoding(renderContext.getCharset());
- RequestDispatcher dispatcher = layoutInfo.getServletContext().getRequestDispatcher(layoutURI);
+ //
+ RequestDispatcher dispatcher = dispatchedServletContext.getRequestDispatcher(layoutURI);
- log.debug("got request dispatcher for layout resource: " + (dispatcher != null));
- if (dispatcher == null)
- {
- throw new IOException("No dispatcher found for : " + layoutInfo.getName() + " [" + layoutURI + "]");
- }
-
//
- request.setAttribute(LayoutConstants.ATTR_RENDERCONTEXT, renderContext);
- request.setAttribute(FilterCommand.REQ_ATT_KEY, this);
- request.setAttribute(LayoutConstants.ATTR_PAGE, markupResult);
+ dispatchedRequest.setAttribute(LayoutConstants.ATTR_RENDERCONTEXT, renderContext);
+ dispatchedRequest.setAttribute(FilterCommand.REQ_ATT_KEY, this);
+ dispatchedRequest.setAttribute(LayoutConstants.ATTR_PAGE, markupResult);
- // This request returns a context path which is the one of the war file in which the target is
- HttpServletRequest wrapper = new HttpServletRequestWrapper(request)
+ //
+ HttpServletRequest requestWrapper = new HttpServletRequestWrapper(dispatchedRequest)
{
public String getContextPath()
{
@@ -128,24 +122,16 @@
}
};
-
- dispatcher.include(wrapper, response);
-
- log.debug("done with the layout");
+ //
+ dispatcher.include(requestWrapper, dispatchedResponse);
}
finally
{
- request.removeAttribute(LayoutConstants.ATTR_PAGE);
- request.removeAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ dispatchedRequest.removeAttribute(LayoutConstants.ATTR_PAGE);
+ dispatchedRequest.removeAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
}
- }
-// private static void writeResponse(RenderContext renderCtx, HttpServletResponse response)
-// throws IOException
-// {
-// Writer out = response.getWriter();
-// out.write(renderCtx.getMarkupFragment().toString());
-// out.flush();
-// Tools.safeClose(out);
-// }
+ //
+ return null;
+ }
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/PortalLayout.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -26,13 +26,14 @@
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.theme.render.RenderContext;
import org.jboss.portal.theme.render.PageRenderer;
+import org.jboss.portal.web.ServletContextDispatcher;
/**
* Implementation of a <code>PortalLayout</code>. <p>An instance of this class represents the meta data of a portal
* layout.</p>
*
* @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>.
- * @version <tt>$Revision$</tt> // * @see org.jboss.portal.theme.LayoutService
+ * @version <tt>$Revision$</tt>
*/
public abstract class PortalLayout
{
@@ -65,5 +66,5 @@
return serviceInfo;
}
- public abstract RenderContext getRenderContext(MarkupInfo markupInfo, ServerInvocation invocation);
+ public abstract RenderContext getRenderContext(MarkupInfo markupInfo, ServletContextDispatcher dispatcher);
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/JSPLayout.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -23,7 +23,6 @@
package org.jboss.portal.theme.impl;
-import org.jboss.portal.server.ServerInvocation;
import org.jboss.portal.theme.LayoutDispatcher;
import org.jboss.portal.theme.PortalLayout;
import org.jboss.portal.theme.page.PageResult;
@@ -35,11 +34,10 @@
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.render.RendererFactory;
import org.jboss.portal.WindowState;
+import org.jboss.portal.web.ServletContextDispatcher;
import org.jboss.portal.common.util.MarkupInfo;
import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Iterator;
@@ -53,13 +51,12 @@
public final class JSPLayout extends PortalLayout implements PageRenderer
{
- public RenderContext getRenderContext(MarkupInfo markupInfo, ServerInvocation invocation)
+ public RenderContext getRenderContext(MarkupInfo markupInfo, ServletContextDispatcher dispatcher)
{
- //
RendererFactory factory = new RendererFactoryImpl(this, serviceInfo, info);
//
- return new RenderContext(factory, invocation, markupInfo);
+ return new RenderContext(factory, dispatcher, markupInfo);
}
public void render(RenderContext renderContext, PageRenderContext prc) throws RenderException
@@ -119,16 +116,8 @@
try
{
- ServerInvocation invocation = renderContext.getServerInvocation();
- HttpServletRequest httpRequest = invocation.getServerContext().getClientRequest();
- HttpServletResponse httpResponse = invocation.getServerContext().getClientResponse();
- LayoutDispatcher dispatcher = new LayoutDispatcher(
- renderContext,
- httpRequest,
- httpResponse,
- prc,
- pageResult.getLayoutURI(),
- getLayoutInfo());
+
+ LayoutDispatcher dispatcher = new LayoutDispatcher(renderContext, prc, pageResult.getLayoutURI(), getLayoutInfo());
dispatcher.include();
}
catch (IOException e)
Modified: trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/page/PageRendition.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -22,17 +22,15 @@
******************************************************************************/
package org.jboss.portal.theme.page;
-import org.jboss.portal.server.ServerInvocation;
import org.jboss.portal.theme.PageService;
-import org.jboss.portal.theme.page.PageResult;
import org.jboss.portal.theme.render.RenderContext;
import org.jboss.portal.theme.render.RenderException;
import org.jboss.portal.theme.PortalLayout;
import org.jboss.portal.theme.ThemeConstants;
import org.jboss.portal.common.util.MarkupInfo;
+import org.jboss.portal.web.ServletContextDispatcher;
import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
@@ -51,7 +49,10 @@
/** . */
private PageService pageService;
- public PageRendition(PortalLayout layout, PageResult markupResult, PageService pageService)
+ public PageRendition(
+ PortalLayout layout,
+ PageResult markupResult,
+ PageService pageService)
{
this.layout = layout;
this.pageResult = markupResult;
@@ -59,31 +60,22 @@
}
/** Performs the page rendition. */
- public void render(ServerInvocation invocation) throws IOException, ServletException
+ public void render(MarkupInfo markupInfo, ServletContextDispatcher dispatcher) throws IOException, ServletException
{
//
- HttpServletRequest clientRequest = invocation.getServerContext().getClientRequest();
+ RenderContext renderContext = layout.getRenderContext(markupInfo, dispatcher);
-
//
-
-
try
{
-
// Place a reference to the theme service into the request so that the theme tag can get to a theme via a theme
// name (specified as tag attribute); this is useful if no theme was defined for the portal or the page
- clientRequest.setAttribute(ThemeConstants.ATTR_THEMESERVER, pageService.getThemeService());
- clientRequest.setAttribute(ThemeConstants.ATTR_THEME, pageResult.getTheme());
- clientRequest.setAttribute(ThemeConstants.ATTR_THEMERESULT, pageResult.getThemeResult());
+ renderContext.setAttribute(ThemeConstants.ATTR_THEMESERVER, pageService.getThemeService());
+ renderContext.setAttribute(ThemeConstants.ATTR_THEME, pageResult.getTheme());
+ renderContext.setAttribute(ThemeConstants.ATTR_THEMERESULT, pageResult.getThemeResult());
- MarkupInfo markupInfo = (MarkupInfo)invocation.getResponse().getContentInfo();
-
- RenderContext renderContext = layout.getRenderContext(markupInfo, invocation);
-
-
+ //
renderContext.render(pageResult);
-
}
catch (RenderException e)
{
@@ -91,7 +83,9 @@
}
finally
{
- clientRequest.removeAttribute(ThemeConstants.ATTR_THEMESERVER);
+ renderContext.setAttribute(ThemeConstants.ATTR_THEMESERVER, null);
+ renderContext.setAttribute(ThemeConstants.ATTR_THEME, null);
+ renderContext.setAttribute(ThemeConstants.ATTR_THEMERESULT, null);
}
}
Modified: trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/page/PageResult.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -84,11 +84,16 @@
this.pageProperties = pageProperties == null ? new HashMap() : pageProperties;
this.portalProperties = portalProperties == null ? new HashMap() : portalProperties;
- results = new HashMap(5);
- windowContexts = new HashMap(5);
- regions = new HashMap(5);
+ this.results = new HashMap(5);
+ this.windowContexts = new HashMap(5);
+ this.regions = new HashMap(5);
}
+ public PageResult(String pageName)
+ {
+ this(pageName, new HashMap(), new HashMap());
+ }
+
public ThemeResult getThemeResult()
{
return themeResult;
Modified: trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/render/RenderContext.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -24,7 +24,7 @@
import org.jboss.portal.common.util.MediaType;
import org.jboss.portal.common.util.MarkupInfo;
-import org.jboss.portal.server.ServerInvocation;
+import org.jboss.portal.web.ServletContextDispatcher;
import java.util.ArrayList;
import java.util.Map;
@@ -42,11 +42,10 @@
{
/** . */
-// private PortalRenderSet renderSet;
private RendererFactory rendererFactory;
/** . */
- private ServerInvocation serverInvocation;
+ private ServletContextDispatcher dispatcher;
/** . */
private StringBuffer markup;
@@ -66,14 +65,14 @@
*/
public RenderContext(
RendererFactory rendererFactory,
- ServerInvocation serverInvocation,
+ ServletContextDispatcher dispatcher,
MarkupInfo markupInfo)
{
if (rendererFactory == null)
{
throw new IllegalArgumentException("no renderer factory provided");
}
- if (serverInvocation == null)
+ if (dispatcher == null)
{
throw new IllegalArgumentException("no server invocation provided");
}
@@ -83,16 +82,16 @@
}
this.rendererFactory = rendererFactory;
- this.serverInvocation = serverInvocation;
+ this.dispatcher = dispatcher;
this.markupInfo = markupInfo;
this.stack = new ArrayList(6);
this.markup = new StringBuffer();
this.attributes = new HashMap();
}
- public ServerInvocation getServerInvocation()
+ public ServletContextDispatcher getDispatcher()
{
- return serverInvocation;
+ return dispatcher;
}
public StringBuffer getMarkupFragment()
Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/ThemeTagHandler.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -27,6 +27,8 @@
import org.jboss.portal.theme.ThemeConstants;
import org.jboss.portal.theme.ThemeResult;
import org.jboss.portal.theme.ThemeServiceInfo;
+import org.jboss.portal.theme.LayoutConstants;
+import org.jboss.portal.theme.render.RenderContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
@@ -78,8 +80,10 @@
PageContext app = (PageContext)getJspContext();
HttpServletRequest request = (HttpServletRequest)app.getRequest();
- ThemeResult result = (ThemeResult)request.getAttribute(ThemeConstants.ATTR_THEMERESULT);
+ RenderContext renderContext = (RenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+ ThemeResult result = (ThemeResult)renderContext.getAttribute(ThemeConstants.ATTR_THEMERESULT);
+
// was the result already prepared for us (in the MarkupCommand)?
if (result != null)
{
@@ -94,7 +98,7 @@
else
{
// no, then perhaps the theme was provided
- PortalTheme theme = (PortalTheme)request.getAttribute(ThemeConstants.ATTR_THEME);
+ PortalTheme theme = (PortalTheme)renderContext.getAttribute(ThemeConstants.ATTR_THEME);
if (theme == null && getThemeName() != null && !"".equals(getThemeName()))
{
// if there is no theme in the request, see if we have one via a tag attribute
@@ -103,8 +107,9 @@
{
log.trace("requested theme not found. Is there a theme attribute in the tag ? " + getThemeName());
}
+
// but in order to get the theme for the provided name, we need the theme service
- ThemeServiceInfo themeServer = (ThemeServiceInfo)request.getAttribute(ThemeConstants.ATTR_THEMESERVER);
+ ThemeServiceInfo themeServer = (ThemeServiceInfo)renderContext.getAttribute(ThemeConstants.ATTR_THEMESERVER);
if (themeServer == null)
{
Modified: trunk/tools/etc/buildfragments/modules.ent
===================================================================
--- trunk/tools/etc/buildfragments/modules.ent 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/tools/etc/buildfragments/modules.ent 2007-04-05 21:05:42 UTC (rev 6929)
@@ -9,6 +9,13 @@
<pathelement path="${jboss.portal-common.lib}/portal-common-lib.jar"/>
</path>
+ <!-- web -->
+ <property name="jboss.portal-web.root" value="${project.root}/web/output"/>
+ <property name="jboss.portal-web.lib" value="${jboss.portal-web.root}/lib"/>
+ <path id="jboss.portal-web.classpath">
+ <pathelement path="${jboss.portal-web.lib}/portal-web-lib.jar"/>
+ </path>
+
<!-- test -->
<property name="jboss.portal-test.root" value="${project.root}/test/output"/>
<property name="jboss.portal-test.lib" value="${jboss.portal-test.root}/lib"/>
Added: trunk/web/build.bat
===================================================================
--- trunk/web/build.bat (rev 0)
+++ trunk/web/build.bat 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,54 @@
+@echo off
+rem
+rem Invokes a script of the same name in the 'tools' module.
+rem
+rem The 'tools' module is expected to be a peer directory of the directory
+rem in which this script lives.
+rem
+rem @author Jason Dillon <jason(a)planet57.com>
+rem
+
+rem $Id: build.bat 1140 2005-11-25 23:38:58Z julien $
+
+setlocal
+
+set PROGNAME=%~nx0
+set DIRNAME=%~dp0
+
+rem Legacy shell support
+if x%PROGNAME%==x set PROGNAME=build.bat
+if x%DIRNAME%==x set DIRNAME=.\
+
+set MODULE_ROOT=%DIRNAME%
+if x%TOOLS_ROOT%==x set TOOLS_ROOT=%DIRNAME%..\tools
+set TARGET=%TOOLS_ROOT%\bin\build.bat
+set ARGS=%*
+
+rem Start'er up yo
+goto main
+
+:debug
+if not x%DEBUG%==x echo %PROGNAME%: %*
+goto :EOF
+
+:main
+call :debug PROGNAME=%PROGNAME%
+call :debug DIRNAME=%DIRNAME%
+call :debug TOOLS_ROOT=%TOOLS_ROOT%
+call :debug TARGET=%TARGET%
+
+if exist %TARGET% call :call-script & goto :EOF
+rem else fail, we can not go on
+
+echo %PROGNAME%: *ERROR* The target executable does not exist:
+echo %PROGNAME%:
+echo %PROGNAME%: %TARGET%
+echo %PROGNAME%:
+echo %PROGNAME%: Please make sure you have checked out the 'tools' module
+echo %PROGNAME%: and make sure it is up to date.
+goto :EOF
+
+:call-script
+call :debug Executing %TARGET% %ARGS%
+call %TARGET% %ARGS%
+goto :EOF
Property changes on: trunk/web/build.bat
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/web/build.sh
===================================================================
--- trunk/web/build.sh (rev 0)
+++ trunk/web/build.sh 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,49 @@
+#!/bin/sh
+##
+## Invokes a script of the same name in the 'tools' module.
+##
+## The 'tools' module is expected to be a peer directory of the directory
+## in which this script lives.
+##
+## @author Jason Dillon <jason(a)planet57.com>
+##
+
+# $Id: build.sh 1140 2005-11-25 23:38:58Z julien $
+
+PROGNAME=`basename $0`
+DIRNAME=`dirname $0`
+
+# Buss it yo
+main() {
+ if [ "x$TOOLS_ROOT" = "x" ]; then
+ TOOLS_ROOT=`cd $DIRNAME/../tools && pwd`
+ fi
+
+ MODULE_ROOT=`cd $DIRNAME; pwd`
+ export TOOLS_ROOT MODULE_ROOT DEBUG TRACE
+
+ # Where is the target script?
+ target="$TOOLS_ROOT/bin/$PROGNAME"
+ if [ ! -f "$target" ]; then
+ echo "${PROGNAME}: *ERROR* The target executable does not exist:"
+ echo "${PROGNAME}:"
+ echo "${PROGNAME}: $target"
+ echo "${PROGNAME}:"
+ echo "${PROGNAME}: Please make sure you have checked out the 'tools' module"
+ echo "${PROGNAME}: and make sure it is up to date."
+ exit 2
+ fi
+
+ # Get busy yo!
+ if [ "x$DEBUG" != "x" ]; then
+ echo "${PROGNAME}: Executing: /bin/sh $target $@"
+ fi
+ if [ "x$TRACE" = "x" ]; then
+ exec /bin/sh $target "$@"
+ else
+ exec /bin/sh -x $target "$@"
+ fi
+}
+
+# Lets get ready to rumble!
+main "$@"
Property changes on: trunk/web/build.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/web/build.xml
===================================================================
--- trunk/web/build.xml (rev 0)
+++ trunk/web/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<!DOCTYPE project [
+ <!ENTITY libraries SYSTEM "../thirdparty/libraries.ent">
+ <!ENTITY buildmagic SYSTEM "../tools/etc/buildfragments/buildmagic.ent">
+ <!ENTITY tools SYSTEM "../tools/etc/buildfragments/tools.ent">
+ <!ENTITY modules SYSTEM "../tools/etc/buildfragments/modules.ent">
+ <!ENTITY defaults SYSTEM "../tools/etc/buildfragments/defaults.ent">
+ <!ENTITY targets SYSTEM "../tools/etc/buildfragments/targets.ent">
+ ]>
+
+<!-- $Id: build.xml 5448 2006-10-13 19:29:17Z chris.laprun(a)jboss.com $ -->
+
+<!--+======================================================================+-->
+<!--| JBoss Portal (The OpenSource Portal) Build File |-->
+<!--| |-->
+<!--| Distributable under LGPL license. |-->
+<!--| See terms of license at http://www.gnu.org. |-->
+<!--| |-->
+<!--| This file has been designed to work with the 'tools' module and |-->
+<!--| Buildmagic extentions. |-->
+<!--+======================================================================+-->
+
+<project default="main" name="JBoss Portal">
+
+ <!--+====================================================================+-->
+ <!--| Setup |-->
+ <!--| |-->
+ <!--| Include the common build elements. |-->
+ <!--| |-->
+ <!--| This defines several different targets, properties and paths. |-->
+ <!--| It also sets up the basic extention tasks amoung other things. |-->
+ <!--+====================================================================+-->
+
+ &buildmagic;
+ &modules;
+ &defaults;
+ &tools;
+ &targets;
+
+ <!-- ================================================================== -->
+ <!-- Initialization -->
+ <!-- ================================================================== -->
+
+ <!--
+ | Initialize the build system. Must depend on '_buildmagic:init'.
+ | Other targets should depend on 'init' or things will mysteriously fail.
+ -->
+
+ <target name="init" unless="init.disable" depends="_buildmagic:init">
+ </target>
+
+ <!--+====================================================================+-->
+ <!--| Configuration |-->
+ <!--| |-->
+ <!--| This target is invoked by the Buildmagic initialization logic |-->
+ <!--| and should contain module specific configuration elements. |-->
+ <!--+====================================================================+-->
+
+ <target name="configure" unless="configure.disable">
+
+ <!-- Configure some properties -->
+ <property name="jboss-junit-configuration" value=""/>
+ <property name="junit.formatter.usefile" value="true"/>
+
+ <!-- Configure thirdparty libraries -->
+ &libraries;
+ <path id="library.classpath">
+ <path refid="sun.servlet.classpath"/>
+ <path refid="apache.log4j.classpath"/>
+ <path refid="junit.junit.classpath"/>
+ </path>
+
+ <!-- Configure modules -->
+ <call target="configure-modules"/>
+ <path id="dependentmodule.classpath">
+ <path refid="jboss.portal-common.classpath"/>
+ </path>
+
+ <!--+=======================================+-->
+ <!--| Override any default properties here. |-->
+ <!--+=======================================+-->
+
+ <!-- Configure defaults & build tools -->
+ <call target="configure-defaults"/>
+ <call target="configure-tools"/>
+
+ <!--+=======================================+-->
+ <!--| Define module specific elements here. |-->
+ <!--+=======================================+-->
+ <property name="javadoc.private" value="true"/>
+ <property name="javadoc.protected" value="false"/>
+
+ </target>
+
+ <!--+====================================================================+-->
+ <!--| Compile |-->
+ <!--| |-->
+ <!--| This target should depend on other compile-* targets for each |-->
+ <!--| different type of compile that needs to be performed, short of |-->
+ <!--| documentation compiles. |-->
+ <!--+====================================================================+-->
+
+ <target name="compile"
+ description="Compile all source files."
+ depends="_default:compile-classes,
+ _default:compile-etc,
+ _default:compile-resources">
+ <!-- Add module specific elements here. -->
+ </target>
+
+ <!--+====================================================================+-->
+ <!--| Generate Output |-->
+ <!--| |-->
+ <!--| Generates the target output for this module. Target output is |-->
+ <!--| the output which is ment to be released or used by external |-->
+ <!--| modules. |-->
+ <!--+====================================================================+-->
+
+ <target name="output"
+ description="Generate all target output."
+ depends="compile">
+ <mkdir dir="${build.lib}"/>
+
+ <!-- portal-web.jar -->
+ <jar jarfile="${build.lib}/portal-web-lib.jar">
+ <fileset dir="${build.classes}"/>
+ </jar>
+
+ </target>
+
+ <!-- ================================================================== -->
+ <!-- Cleaning -->
+ <!-- ================================================================== -->
+
+ <!-- Clean up all build output -->
+ <target name="clean" depends="_default:clean">
+ <!-- Add module specific elements here. -->
+ </target>
+
+ <!--+====================================================================+-->
+ <!--| Documents |-->
+ <!--| |-->
+ <!--| Generate all documentation for this module. |-->
+ <!--+====================================================================+-->
+
+ <target name="docs" depends="_default:docs">
+ <!-- Add module specific elements here. -->
+ </target>
+
+ <!-- ================================================================== -->
+ <!-- Misc. -->
+ <!-- ================================================================== -->
+
+ <target name="main" depends="most"/>
+ <target name="all" depends="_default:all"/>
+ <target name="most" depends="_default:most"/>
+ <target name="help" depends="_default:help"/>
+
+ <!-- ================================================================== -->
+ <!-- Deployment -->
+ <!-- ================================================================== -->
+
+</project>
Property changes on: trunk/web/build.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/web/src/main/org/jboss/portal/web/RequestDispatchCallback.java
===================================================================
--- trunk/web/src/main/org/jboss/portal/web/RequestDispatchCallback.java (rev 0)
+++ trunk/web/src/main/org/jboss/portal/web/RequestDispatchCallback.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,51 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.web;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
+
+/**
+ * Callback contract.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public interface RequestDispatchCallback
+{
+ /**
+ * Called by the runtime context when request dispatching has been done.
+ *
+ * @param dispatchedServletContext the dispatched servlet context
+ * @param dispatchedRequest the dispatched request
+ * @param dispatchedResponse the dispatched response
+ * @param handback the handback object provided to the dispatched @return any object
+ * @throws Exception any exception
+ */
+ Object doCallback(
+ ServletContext dispatchedServletContext,
+ HttpServletRequest dispatchedRequest,
+ HttpServletResponse dispatchedResponse,
+ Object handback) throws Exception;
+}
Added: trunk/web/src/main/org/jboss/portal/web/ServletContextDispatcher.java
===================================================================
--- trunk/web/src/main/org/jboss/portal/web/ServletContextDispatcher.java (rev 0)
+++ trunk/web/src/main/org/jboss/portal/web/ServletContextDispatcher.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,66 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.web;
+
+import org.jboss.portal.web.spi.ServletContainerContext;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Encapsulate dispatching functionnality into a single class so it is easy to
+ * pass it as an argment to a framework that neeeds a dispatcher to just a
+ * servlet context and does not care about the underlying spi or request/response.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class ServletContextDispatcher
+{
+
+ /** . */
+ private final HttpServletRequest request;
+
+ /** . */
+ private final HttpServletResponse response;
+
+ /** . */
+ private final ServletContainerContext containerContext;
+
+ public ServletContextDispatcher(HttpServletRequest request, HttpServletResponse response, ServletContainerContext containerContext)
+ {
+ this.request = request;
+ this.response = response;
+ this.containerContext = containerContext;
+ }
+
+ public Object include(
+ ServletContext targetServletContext,
+ RequestDispatchCallback callback,
+ Object handback) throws Exception
+ {
+ return containerContext.include(targetServletContext, request, response, callback, handback);
+ }
+
+}
Added: trunk/web/src/main/org/jboss/portal/web/spi/ServletContainerContext.java
===================================================================
--- trunk/web/src/main/org/jboss/portal/web/spi/ServletContainerContext.java (rev 0)
+++ trunk/web/src/main/org/jboss/portal/web/spi/ServletContainerContext.java 2007-04-05 21:05:42 UTC (rev 6929)
@@ -0,0 +1,55 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.web.spi;
+
+import org.jboss.portal.web.RequestDispatchCallback;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
+
+/**
+ * Defines the service provider interface that a servlet container offers.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ServletContainerContext
+{
+ /**
+ * Generic detyped request dispatch to a servlet context using the include mechanism.
+ *
+ * @param targetServletContext the target servlet context to dispatch to
+ * @param request the request valid in the current servlet context
+ * @param response the response valid in the current servlet context
+ * @param callback the callback to perform after the dispatch operation
+ * @param handback the handback object to provide
+ * @return any object
+ * @throws Exception any exception
+ */
+ Object include(
+ ServletContext targetServletContext, HttpServletRequest request,
+ HttpServletResponse response,
+ RequestDispatchCallback callback,
+ Object handback) throws Exception;
+}
Modified: trunk/wsrp/build.xml
===================================================================
--- trunk/wsrp/build.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/wsrp/build.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -475,6 +475,7 @@
includes="portal-portlet-lib.jar, portal-portlet-test-lib.jar"/>
<fileset dir="${jboss.portal-portlet-server.root}/lib"
includes="portal-portlet-server-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portal-portlet-federation.root}/lib" includes="portal-portlet-federation-lib.jar"/>
<fileset dir="${jboss.portal-registration.root}/lib" includes="portal-registration-lib.jar"/>
<fileset dir="${jboss.portal-test.lib}" includes="portal-test-lib.jar"/>
@@ -535,6 +536,7 @@
<fileset dir="${jboss.portlet-api.root}/lib" includes="portal-api-lib.jar"/>
<fileset dir="${jboss.portal-portlet.root}/lib" includes="portal-portlet-lib.jar"/>
<fileset dir="${jboss.portal-portlet-server.root}/lib" includes="portal-portlet-server-lib.jar"/>
+ <fileset dir="${jboss.portal-web.root}/lib" includes="portal-web-lib.jar"/>
<fileset dir="${jboss.portal-portlet-federation.root}/lib" includes="portal-portlet-federation-lib.jar"/>
<fileset dir="${jboss.portal-registration.root}/lib" includes="portal-registration-lib.jar"/>
<fileset dir="${jboss.portal-test.lib}" includes="portal-test-lib.jar"/>
Modified: trunk/wsrp/src/resources/tests/test-wsrp-producer-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/wsrp/src/resources/tests/test-wsrp-producer-sar/META-INF/jboss-service.xml 2007-04-05 17:49:53 UTC (rev 6928)
+++ trunk/wsrp/src/resources/tests/test-wsrp-producer-sar/META-INF/jboss-service.xml 2007-04-05 21:05:42 UTC (rev 6929)
@@ -44,15 +44,6 @@
<attribute name="ExportedInterfaces">org.jboss.portal.test.framework.driver.http.HttpTestDriver</attribute>
</mbean>
- <!-- Runtime context for running portlet container -->
- <mbean
- code="org.jboss.portal.web.jboss.JBossWebContext"
- name="portal:service=ServletContainerContext"
- xmbean-dd=""
- xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
- <xmbean/>
- </mbean>
-
<!-- Webapp registry -->
<mbean
code="org.jboss.portal.portlet.impl.container.PortletApplicationRegistryImpl"
17 years, 3 months
JBoss Portal SVN: r6928 - trunk/build/ide/intellij/idea60/modules/server.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2007-04-05 13:49:53 -0400 (Thu, 05 Apr 2007)
New Revision: 6928
Modified:
trunk/build/ide/intellij/idea60/modules/server/server.iml
Log:
- Added jboss-backport-concurrent.jar.
Modified: trunk/build/ide/intellij/idea60/modules/server/server.iml
===================================================================
--- trunk/build/ide/intellij/idea60/modules/server/server.iml 2007-04-05 17:41:53 UTC (rev 6927)
+++ trunk/build/ide/intellij/idea60/modules/server/server.iml 2007-04-05 17:49:53 UTC (rev 6928)
@@ -85,6 +85,15 @@
</library>
</orderEntry>
<orderEntry type="module" module-name="jems" />
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/../../../../../../thirdparty/jboss/backport-concurrent/lib/jboss-backport-concurrent.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
<orderEntryProperties />
</component>
<component name="VcsManagerConfiguration">
17 years, 3 months
JBoss Portal SVN: r6927 - in trunk/wsrp/src/main/org/jboss/portal: test/wsrp/other and 2 other directories.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2007-04-05 13:41:53 -0400 (Thu, 05 Apr 2007)
New Revision: 6927
Modified:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/other/ProducerSessionInformationTestCase.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ConsumerRegistryService.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/InvocationHandler.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerSessionInformation.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RenderHandler.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/SessionHandler.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java
Log:
- Work on releaseSessions (needs more testing).
- Moved releaseSessions code to SessionHandler.
- Removed releaseSessions(String[]) from WSRPConsumer.
- ConsumerRegistryService.destroyConsumer now calls releaseSessions without failing.
- Make logger static where appropriate.
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -91,10 +91,6 @@
{
}
- public void releaseSessions(String[] sessionIds) throws PortletInvokerException
- {
- }
-
public void releaseSessions()
{
}
Modified: trunk/wsrp/src/main/org/jboss/portal/test/wsrp/other/ProducerSessionInformationTestCase.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/test/wsrp/other/ProducerSessionInformationTestCase.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/test/wsrp/other/ProducerSessionInformationTestCase.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -25,7 +25,6 @@
import junit.framework.TestCase;
import org.apache.commons.httpclient.Cookie;
-import org.jboss.portal.test.wsrp.framework.support.MockWSRPConsumer;
import org.jboss.portal.wsrp.WSRPConstants;
import org.jboss.portal.wsrp.WSRPTypeFactory;
import org.jboss.portal.wsrp.consumer.ProducerSessionInformation;
@@ -43,7 +42,6 @@
protected void setUp() throws Exception
{
info = new ProducerSessionInformation();
- info.setAssociatedConsumer(new MockWSRPConsumer("id"));
}
public void testUserCookie() throws Exception
@@ -127,7 +125,7 @@
assertEquals(sid2, info.getSessionIdForPortlet(handle2));
assertEquals(1, info.getNumberOfSessions());
- info.releaseSessionForPortlet(handle2);
+ info.removeSessionForPortlet(handle2);
assertEquals(0, info.getNumberOfSessions());
}
@@ -160,27 +158,27 @@
assertEquals(3, info.getNumberOfSessions());
- info.releaseSessions();
+ info.removeSessions();
assertEquals(0, info.getNumberOfSessions());
addSession("handle", "id", 1);
addSession("handle2", "id2", 2);
- info.releaseSession("id2");
+ info.removeSession("id2");
assertEquals(1, info.getNumberOfSessions());
assertNull(info.getSessionIdForPortlet("handle2"));
assertEquals("id", info.getSessionIdForPortlet("handle"));
- info.releaseSessionForPortlet("handle");
+ info.removeSessionForPortlet("handle");
assertEquals(0, info.getNumberOfSessions());
assertNull(info.getSessionIdForPortlet("handle"));
try
{
- info.releaseSessionForPortlet("handle");
+ info.removeSessionForPortlet("handle");
fail("Session for portlet 'handle' should have already been released!");
}
catch (IllegalArgumentException expected)
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -99,19 +99,11 @@
void refreshProducerInfo() throws PortletInvokerException;
/**
- * Instructs the associated producer to release the specified sessions.
- *
- * @param sessionIds
- * @since 2.6
- */
- void releaseSessions(String[] sessionIds) throws PortletInvokerException;
-
- /**
* Releases all the sessions held by this Consumer
*
* @since 2.6
*/
- void releaseSessions();
+ void releaseSessions() throws PortletInvokerException;
/**
* Prepares this Consumer to be used: service is started, endpoints are ready.
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ConsumerRegistryService.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ConsumerRegistryService.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ConsumerRegistryService.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -103,7 +103,14 @@
{
ProducerInfo info = consumer.getProducerInfo();
-// consumer.releaseSessions(); // todo: fix, this is called from a different thread than the one that sets the req in ServletAccess
+ try
+ {
+ consumer.releaseSessions();
+ }
+ catch (PortletInvokerException e)
+ {
+ log.debug("releaseSessions failed when attempting to destroy " + CONSUMER_WITH_ID + id + "'");
+ }
registerOrDeregisterConsumerWith(id, false);
deactivateConsumerWith(id);
consumers.remove(id);
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/InvocationHandler.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/InvocationHandler.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/InvocationHandler.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -51,7 +51,8 @@
{
protected WSRPConsumerImpl consumer;
- protected Logger log = Logger.getLogger(getClass());
+ protected static Logger log = Logger.getLogger(InvocationHandler.class);
+
/**
* Value indicating that we should not try further (unrecoverable error) for getMarkup and
* processBlockingInteraction
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerSessionInformation.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerSessionInformation.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerSessionInformation.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -28,10 +28,10 @@
import org.jboss.portal.common.util.ParameterValidation;
import org.jboss.portal.common.util.Tools;
import org.jboss.portal.wsrp.WSRPConstants;
-import org.jboss.portal.wsrp.WSRPConsumer;
import org.jboss.portal.wsrp.core.SessionContext;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -61,20 +61,8 @@
private Map sessionId2PortletHandle;
private Cookie[] userCookie;
+ private SessionHandler parent;
- private WSRPConsumer associatedConsumer;
-
- public void setAssociatedConsumer(WSRPConsumer associatedConsumer)
- {
- ParameterValidation.throwIllegalArgExceptionIfNull(associatedConsumer, "Consumer");
- this.associatedConsumer = associatedConsumer;
- /*if (associatedConsumer instanceof WSRPConsumerImpl)
- {
- WSRPConsumerImpl consumer = (WSRPConsumerImpl)associatedConsumer;
- consumer.add
- }*/
- }
-
public String getUserCookie()
{
if (userCookie == null)
@@ -185,6 +173,11 @@
portletSessions.put(portletHandle, info);
sessionId2PortletHandle.put(sessionContext.getSessionID(), portletHandle);
+
+ if (parent != null)
+ {
+ parent.addSessionMapping(sessionContext.getSessionID(), this);
+ }
}
/**
@@ -218,7 +211,11 @@
}
}
- public void releaseSession(String sessionId)
+ /**
+ * @param sessionId
+ * @return the id of the removed session or <code>null</code> if the session had already expired
+ */
+ public String removeSession(String sessionId)
{
ParameterValidation.throwIllegalArgExceptionIfNull(sessionId, "session id");
@@ -228,10 +225,14 @@
throw new IllegalArgumentException("No such session id: '" + sessionId + "'");
}
- releaseSessionForPortlet(portletHandle);
+ return removeSessionForPortlet(portletHandle);
}
- public void releaseSessions()
+ /**
+ * @return a list containing the session ids that were still valid when they were removed and would need to be
+ * released
+ */
+ public List removeSessions()
{
List idsToRelease = new ArrayList(getNumberOfSessions());
@@ -250,52 +251,20 @@
}
}
- if (!idsToRelease.isEmpty())
- {
- releaseSessions((String[])idsToRelease.toArray(new String[0]));
- }
+ return idsToRelease;
}
- public void releaseSessionForPortlet(String portletHandle)
+ /**
+ * @param portletHandle
+ * @return the id of the removed session or <code>null</code> if the session had already expired
+ */
+ public String removeSessionForPortlet(String portletHandle)
{
SessionIdResult result = removeSessionIdForPortlet(portletHandle);
- // if the session is still valid, release it and remove the associated mappings
- final String[] sessionIds;
- if (!result.expired)
- {
- sessionIds = new String[]{result.id};
- }
- else
- {
- sessionIds = null;
- }
-
- releaseSessions(sessionIds);
+ return result.expired ? null : result.id;
}
- private void releaseSessions(final String[] sessionIds)
- {
- if (sessionIds != null && sessionIds.length > 0)
- {
- Runnable releaseSession = new Runnable()
- {
- public void run()
- {
- try
- {
- associatedConsumer.releaseSessions(sessionIds);
- }
- catch (Exception e)
- {
- log.debug(e);
- }
- }
- };
- new Thread(releaseSession).start();
- }
- }
-
private SessionIdResult removeSessionIdForPortlet(String portletHandle)
{
ProducerSessionInformation.SessionIdResult result = internalGetSessionIdForPortlet(portletHandle);
@@ -311,6 +280,10 @@
{
portletSessions.remove(portletHandle);
sessionId2PortletHandle.remove(id);
+ if (parent != null)
+ {
+ parent.removeSessionId(id);
+ }
}
return result;
@@ -379,6 +352,10 @@
{
portletSessions.remove(session.getPortletHandle());
sessionId2PortletHandle.remove(session.getSessionId());
+ if (parent != null)
+ {
+ parent.removeSessionId(session.getSessionId());
+ }
return new SessionIdResult(id, true);
}
else
@@ -401,6 +378,24 @@
return (SessionInfo)portletSessions.get(portletHandle);
}
+ /**
+ * @return
+ * @since 2.6
+ */
+ Collection getSessionIds()
+ {
+ return sessionId2PortletHandle.keySet();
+ }
+
+ /**
+ * @param sessionHandler
+ * @since 2.6
+ */
+ void setParent(SessionHandler sessionHandler)
+ {
+ parent = sessionHandler;
+ }
+
private class SessionInfo
{
private SessionContext sessionContext;
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RenderHandler.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RenderHandler.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RenderHandler.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -23,7 +23,6 @@
package org.jboss.portal.wsrp.consumer;
-import org.jboss.logging.Logger;
import org.jboss.portal.common.util.Tools;
import org.jboss.portal.common.util.URLTools;
import org.jboss.portal.portlet.invocation.PortletInvocation;
@@ -196,7 +195,6 @@
private static class WSRPURLRewriter extends URLTools.URLReplacementGenerator
{
- protected Logger log = Logger.getLogger(getClass());
private PortletInvocationContext context;
private Boolean secure;
private Boolean authenticated;
@@ -237,8 +235,6 @@
private static class ResourceURLRewriter extends URLTools.URLReplacementGenerator
{
- protected Logger log = Logger.getLogger(getClass());
-
public String getReplacementFor(int currentIndex, URLTools.URLMatch currentMatch)
{
String urlAsString = currentMatch.getURLAsString();
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/SessionHandler.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/SessionHandler.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/SessionHandler.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -33,13 +33,19 @@
import org.jboss.portal.wsrp.core.CookieProtocol;
import org.jboss.portal.wsrp.core.InitCookie;
import org.jboss.portal.wsrp.core.InvalidRegistrationFault;
+import org.jboss.portal.wsrp.core.ReleaseSessions;
import org.jboss.portal.wsrp.core.RuntimeContext;
import org.jboss.portal.wsrp.core.SessionContext;
import org.jboss.portal.wsrp.handler.RequestHeaderClientHandler;
import javax.servlet.http.HttpSession;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* Manages session informations on behalf of a consumer.
@@ -51,7 +57,7 @@
public class SessionHandler
{
protected WSRPConsumerImpl consumer;
- protected Logger log = Logger.getLogger(getClass());
+ private static Logger log = Logger.getLogger(SessionHandler.class);
/** Cookie protocol required by the producer with the consumer */
private CookieProtocol requiresInitCookie;
@@ -59,6 +65,8 @@
/** The prefix used to isolate WSRP-related session information in the actual session object. */
private static final String SESSION_ID_PREFIX = "org.jboss.portal.wsrp.session.";
+ private Map sessionInfos = new HashMap(); // todo: thread-safe?
+
/**
* Constructs a new SessionHandler.
*
@@ -237,7 +245,7 @@
if (sessionInformation != null)
{
- sessionInformation.setAssociatedConsumer(consumer);
+ sessionInformation.setParent(this);
}
else
{
@@ -245,7 +253,7 @@
{
sessionInformation = new ProducerSessionInformation();
session.setAttribute(producerSessionKey, sessionInformation);
- sessionInformation.setAssociatedConsumer(consumer);
+ sessionInformation.setParent(this);
}
}
@@ -270,7 +278,113 @@
private void invalidateSession(PortletInvocation invocation)
{
HttpSession session = WSRPConsumerImpl.getHttpSession(invocation);
+
+ // remove the associated info from the known producer session informations
+
+ ProducerSessionInformation info = getProducerSessionInformation(session, false);
+ if (info != null)
+ {
+ try
+ {
+ internalReleaseSessions(info.removeSessions());
+ }
+ catch (PortletInvokerException e)
+ {
+ // ignore since it's logged by internalReleaseSessions already
+ }
+ }
+
+
session.removeAttribute(getProducerSessionInformationKey());
RequestHeaderClientHandler.resetCurrentInfo();
}
+
+ /** @since 2.6 */
+ void releaseSessions() throws PortletInvokerException
+ {
+ List idsToRelease = new ArrayList(sessionInfos.size());
+
+ Set uniqueInfos = new HashSet(sessionInfos.values());
+
+ for (Iterator infos = uniqueInfos.iterator(); infos.hasNext();)
+ {
+ ProducerSessionInformation info = (ProducerSessionInformation)infos.next();
+ idsToRelease.add(info.removeSessions());
+ }
+
+ internalReleaseSessions(idsToRelease);
+ }
+
+ /**
+ * @param sessionIds
+ * @throws PortletInvokerException
+ * @since 2.6
+ */
+ void releaseSessions(String[] sessionIds) throws PortletInvokerException
+ {
+ if (sessionIds != null)
+ {
+ List idsToRelease = new ArrayList();
+
+ for (int i = 0; i < sessionIds.length; i++)
+ {
+ String sessionId = sessionIds[i];
+ ProducerSessionInformation info = (ProducerSessionInformation)sessionInfos.get(sessionId);
+ sessionId = info.removeSession(sessionId);
+ if (sessionId != null)
+ {
+ idsToRelease.add(sessionId);
+ }
+ }
+
+ internalReleaseSessions(idsToRelease);
+ }
+ }
+
+ private void internalReleaseSessions(List idsToRelease) throws PortletInvokerException
+ {
+ if (idsToRelease != null && !idsToRelease.isEmpty())
+ {
+ ReleaseSessions releaseSessions = WSRPTypeFactory.createReleaseSessions(consumer.getRegistrationContext(),
+ (String[])idsToRelease.toArray(new String[0]));
+
+ try
+ {
+ consumer.getMarkupService().releaseSessions(releaseSessions);
+ }
+ catch (InvalidRegistrationFault invalidRegistrationFault)
+ {
+ log.debug("Invalid Registration");
+ consumer.handleInvalidRegistrationFault();
+ }
+ catch (Exception e)
+ {
+ log.debug(e);
+ throw new PortletInvokerException("Couldn't release sessions " + idsToRelease, e);
+ }
+ }
+ }
+
+ /**
+ * Update session mappings when a session has expired
+ *
+ * @param id
+ * @since 2.6
+ */
+ void removeSessionId(String id)
+ {
+ sessionInfos.remove(id);
+ }
+
+ /**
+ * Update session mappings when a new session id is added to the specified ProducerSessionInformation
+ *
+ * @param sessionID
+ * @param producerSessionInformation
+ * @since 2.6
+ */
+ void addSessionMapping(String sessionID, ProducerSessionInformation producerSessionInformation)
+ {
+ sessionInfos.put(sessionID, producerSessionInformation);
+ }
}
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java 2007-04-05 15:09:59 UTC (rev 6926)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java 2007-04-05 17:41:53 UTC (rev 6927)
@@ -54,12 +54,10 @@
import org.jboss.portal.wsrp.core.DestroyPortlets;
import org.jboss.portal.wsrp.core.DestroyPortletsResponse;
import org.jboss.portal.wsrp.core.GetPortletProperties;
-import org.jboss.portal.wsrp.core.InvalidRegistrationFault;
import org.jboss.portal.wsrp.core.Property;
import org.jboss.portal.wsrp.core.PropertyList;
import org.jboss.portal.wsrp.core.RegistrationContext;
import org.jboss.portal.wsrp.core.RegistrationData;
-import org.jboss.portal.wsrp.core.ReleaseSessions;
import org.jboss.portal.wsrp.core.ResetProperty;
import org.jboss.portal.wsrp.core.RuntimeContext;
import org.jboss.portal.wsrp.core.SetPortletProperties;
@@ -68,7 +66,6 @@
import org.jboss.portal.wsrp.core.WSRP_v1_Registration_PortType;
import org.jboss.portal.wsrp.core.WSRP_v1_ServiceDescription_PortType;
import org.jboss.portal.wsrp.services.ServiceFactory;
-import org.jboss.portal.wsrp.servlet.ServletAccess;
import org.jboss.portal.wsrp.servlet.UserAccess;
import javax.servlet.http.HttpServletRequest;
@@ -539,41 +536,11 @@
sessionHandler.setRequiresInitCookie(producerInfo.getRequiresInitCookie());
}
- public void releaseSessions(String[] sessionIds) throws PortletInvokerException
+ public void releaseSessions() throws PortletInvokerException
{
- //todo: move to SessionHandler?
- ReleaseSessions releaseSessions = WSRPTypeFactory.createReleaseSessions(getRegistrationContext(), sessionIds);
-
- try
- {
- getMarkupService().releaseSessions(releaseSessions);
- }
- catch (InvalidRegistrationFault invalidRegistrationFault)
- {
- log.debug("Invalid Registration");
- handleInvalidRegistrationFault();
- }
- catch (Exception e)
- {
- log.debug(e);
- throw new PortletInvokerException("Couldn't release session '" + sessionIds + "'.", e);
- }
+ sessionHandler.releaseSessions();
}
- public void releaseSessions()
- {
- // todo: move to SessionHandler?
- HttpSession session = ServletAccess.getRequest().getSession(false);
- if (session != null)
- {
- ProducerSessionInformation info = getProducerSessionInformationFrom(session);
- if (info != null)
- {
- info.releaseSessions();
- }
- }
- }
-
// Support methods **************************************************************************************************
private String getUserContextKeyFor(UserContext userContext)
17 years, 3 months
JBoss Portal SVN: r6926 - in trunk/theme/src: main/org/jboss/portal/test/theme/tmp and 4 other directories.
by portal-commits@lists.jboss.org
Author: julien(a)jboss.com
Date: 2007-04-05 11:09:59 -0400 (Thu, 05 Apr 2007)
New Revision: 6926
Added:
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestHelper.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestLayoutServiceImpl.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestThemeServiceImpl.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/
Removed:
trunk/theme/src/main/org/jboss/portal/test/theme/TestHelper.java
trunk/theme/src/main/org/jboss/portal/test/theme/TestLayoutServiceImpl.java
trunk/theme/src/main/org/jboss/portal/test/theme/TestThemeServiceImpl.java
trunk/theme/src/main/org/jboss/portal/test/theme/metadata/
trunk/theme/src/main/org/jboss/portal/test/theme/render/
trunk/theme/src/main/org/jboss/portal/test/theme/servlet/
Modified:
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestPortalLayoutMetaData.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestPortalThemeMetaData.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestRenderSetMetaData.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestAJAXServlet.java
trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java
trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml
Log:
moved existing theme test to a tmp package in order to make the cleanup after
Deleted: trunk/theme/src/main/org/jboss/portal/test/theme/TestHelper.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestHelper.java 2007-04-05 14:14:24 UTC (rev 6925)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestHelper.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -1,799 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * 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.jboss.portal.test.theme;
-
-import org.jboss.portal.common.invocation.AttributeResolver;
-import org.jboss.portal.portlet.Properties;
-import org.jboss.portal.server.ServerRequest;
-import org.jboss.portal.theme.LayoutService;
-import org.jboss.portal.theme.RuntimeContext;
-import org.jboss.portal.theme.ThemeService;
-import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
-import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
-import org.jboss.portal.theme.impl.LayoutServiceImpl;
-import org.jboss.portal.theme.impl.ThemeServiceImpl;
-import org.jboss.portal.theme.impl.PageServiceImpl;
-import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
-import org.jboss.portal.theme.metadata.RenderSetMetaData;
-import org.jboss.portal.theme.page.PageResult;
-import org.jboss.portal.theme.PageService;
-import org.jboss.portal.theme.page.WindowContext;
-import org.jboss.portal.theme.page.WindowResult;
-import org.jboss.system.ServiceMBeanSupport;
-import org.jboss.xb.binding.UnmarshallerFactory;
-import org.xml.sax.SAXException;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.Principal;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
- * @version $Revision$
- */
-public class TestHelper
-{
- public static PageService createPageService() throws Exception
- {
- LayoutService layoutService = new LayoutServiceImpl();
- ((ServiceMBeanSupport)layoutService).create();
- ((ServiceMBeanSupport)layoutService).start();
-
- ThemeService themeService = new ThemeServiceImpl();
- ((ServiceMBeanSupport)themeService).create();
- ((ServiceMBeanSupport)themeService).start();
-
- PageService pageService = new PageServiceImpl();
- pageService.setLayoutService(layoutService);
- pageService.setThemeService(themeService);
- ((ServiceMBeanSupport)pageService).create();
- ((ServiceMBeanSupport)pageService).start();
-
- return pageService;
- }
-
- public static void destroyPageService(PageService pageService)
- {
- ((ServiceMBeanSupport)pageService.getLayoutService()).stop();
- ((ServiceMBeanSupport)pageService.getThemeService()).stop();
- ((ServiceMBeanSupport)pageService).stop();
- ((ServiceMBeanSupport)pageService.getLayoutService()).destroy();
- ((ServiceMBeanSupport)pageService.getThemeService()).destroy();
- ((ServiceMBeanSupport)pageService).destroy();
- }
-
- public static RuntimeContext createRuntimeContext()
- {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- return new RuntimeContext("TestAppId", new TestContext(), "TestContextPath", loader);
- }
-
- public static WindowResult createWindowResult(String windowTitle, String content)
- {
- // setup the window result
- return createWindowResult(windowTitle, content, Collections.EMPTY_MAP);
- }
-
- public static WindowResult createWindowResult(String title, String content, Map windowProps)
- {
- // setup the window result
- Map actionsMap = Collections.EMPTY_MAP;
- Properties responseProps = null;
- String headerChars = null;
- return new WindowResult(title, content, actionsMap, windowProps, responseProps, headerChars, null, null);
- }
-
- public static RenderSetMetaData createRenderSetMD() throws Exception
- {
- List renderSets = (List)UnmarshallerFactory.newInstance().newUnmarshaller().unmarshal(createRenderSetDescriptor(), new RenderSetMetaDataFactory(), null);
- return (RenderSetMetaData)renderSets.get(0);
- }
-
- public static List createRenderSetMDList() throws Exception
- {
- List renderSets = (List)UnmarshallerFactory.newInstance().newUnmarshaller().unmarshal(createRenderSetDescriptor(), new RenderSetMetaDataFactory(), null);
- return renderSets;
- }
-
- private static Reader createRenderSetDescriptor()
- throws IOException, SAXException, ParserConfigurationException
- {
- StringBuffer testString = new StringBuffer();
- testString.append("<portal-renderSet>");
- testString.append("<renderSet name=\"emptyRenderer\">");
- testString.append("<set content-type=\"text/html\">");
- testString.append("<region-renderer>org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer</region-renderer>");
- testString.append("<window-renderer>org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer</window-renderer>");
- testString.append("<portlet-renderer>org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer</portlet-renderer>");
- testString.append("<decoration-renderer>org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer</decoration-renderer>");
- testString.append("</set>");
- testString.append("</renderSet>");
-
- testString.append("<renderSet name=\"divRenderer\">");
- testString.append("<set content-type=\"text/html\">");
- testString.append("<region-renderer>org.jboss.portal.theme.impl.render.div.DivRegionRenderer</region-renderer>");
- testString.append("<window-renderer>org.jboss.portal.theme.impl.render.div.DivWindowRenderer</window-renderer>");
- testString.append("<portlet-renderer>org.jboss.portal.theme.impl.render.div.DivPortletRenderer</portlet-renderer>");
- testString.append("<decoration-renderer>org.jboss.portal.theme.impl.render.div.DivDecorationRenderer</decoration-renderer>");
- testString.append("</set>");
- testString.append("</renderSet>");
-
- testString.append("</portal-renderSet>");
-
- return new StringReader(testString.toString());
- }
-
- public static PortalLayoutMetaData createLayoutMD() throws Exception
- {
- // create a descriptor for the tests
- StringBuffer testString = new StringBuffer();
- testString.append("<layouts>");
- testString.append("<layout>");
- testString.append("<name>TestLayout</name>");
- testString.append("<uri>/test/index.jsp</uri>");
- testString.append("<regions>");
- testString.append("<region name=\"left\"/>");
- testString.append("<region name=\"center\"/>");
- testString.append("</regions>");
- testString.append("</layout>");
- testString.append("</layouts>");
- List layoutMDList = (List)UnmarshallerFactory.newInstance().newUnmarshaller().unmarshal(new StringReader(testString.toString()), new PortalLayoutMetaDataFactory(), null);
- return (PortalLayoutMetaData)layoutMDList.get(0);
- }
-
- public static PageResult createPageResult(AttributeResolver navCtx, String pageName,
- Map pageProperties, Map portalProperties, WindowContext[] windows)
- {
- PageResult pageResult = new PageResult(pageName, pageProperties, portalProperties);
- for (int i = 0; i < windows.length; i++)
- {
- pageResult.addWindowContext(windows[i]);
- }
- return pageResult;
- }
-
- public static ServerRequest createServerRequest()
- {
- final HttpServletRequest clientRequest = new TestHttpServletRequest();
- return new ServerRequest(null);
- }
-
- public static class TestContext implements ServletContext
- {
- public TestContext()
- {
-
- }
-
- public ServletContext getContext(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getMajorVersion()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getMinorVersion()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getMimeType(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Set getResourcePaths(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public URL getResource(String string) throws MalformedURLException
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public InputStream getResourceAsStream(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public RequestDispatcher getRequestDispatcher(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public RequestDispatcher getNamedDispatcher(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Servlet getServlet(String string) throws ServletException
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getServlets()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getServletNames()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void log(String string)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void log(Exception exception, String string)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void log(String string, Throwable throwable)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRealPath(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getServerInfo()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getInitParameter(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getInitParameterNames()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Object getAttribute(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getAttributeNames()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setAttribute(String string, Object object)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void removeAttribute(String string)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getServletContextName()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
- }
-
-
- // request
- public static class TestHttpServletRequest implements HttpServletRequest
- {
- private Map attributes;
-
- public TestHttpServletRequest()
- {
- attributes = new HashMap();
- }
-
- public String getAuthType()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Cookie[] getCookies()
- {
- return new Cookie[0]; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public long getDateHeader(String string)
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getHeader(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getHeaders(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getHeaderNames()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getIntHeader(String string)
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getMethod()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getPathInfo()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getPathTranslated()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getContextPath()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getQueryString()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRemoteUser()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isUserInRole(String string)
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Principal getUserPrincipal()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRequestedSessionId()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRequestURI()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public StringBuffer getRequestURL()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getServletPath()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public HttpSession getSession(boolean b)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public HttpSession getSession()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isRequestedSessionIdValid()
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isRequestedSessionIdFromCookie()
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isRequestedSessionIdFromURL()
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isRequestedSessionIdFromUrl()
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Object getAttribute(String key)
- {
- return attributes.get(key);
- }
-
- public Enumeration getAttributeNames()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getCharacterEncoding()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setCharacterEncoding(String string) throws UnsupportedEncodingException
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getContentLength()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getContentType()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public ServletInputStream getInputStream() throws IOException
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getParameter(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getParameterNames()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String[] getParameterValues(String string)
- {
- return new String[0]; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Map getParameterMap()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getProtocol()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getScheme()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getServerName()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getServerPort()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public BufferedReader getReader() throws IOException
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRemoteAddr()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRemoteHost()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setAttribute(String key, Object value)
- {
- attributes.put(key, value);
- }
-
- public void removeAttribute(String key)
- {
- attributes.remove(key);
- }
-
- public Locale getLocale()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Enumeration getLocales()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isSecure()
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public RequestDispatcher getRequestDispatcher(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getRealPath(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getRemotePort()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getLocalName()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getLocalAddr()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getLocalPort()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
- }
-
- // response
- public static class TestHttpServletResponse implements HttpServletResponse
- {
- private StringWriter writer;
-
- public TestHttpServletResponse()
- {
-
- }
-
- public void addCookie(Cookie cookie)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean containsHeader(String string)
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String encodeURL(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String encodeRedirectURL(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String encodeUrl(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String encodeRedirectUrl(String string)
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void sendError(int i, String string) throws IOException
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void sendError(int i) throws IOException
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void sendRedirect(String string) throws IOException
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setDateHeader(String string, long l)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void addDateHeader(String string, long l)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setHeader(String string, String string1)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void addHeader(String string, String string1)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setIntHeader(String string, int i)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void addIntHeader(String string, int i)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setStatus(int i)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setStatus(int i, String string)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getCharacterEncoding()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getContentType()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public ServletOutputStream getOutputStream() throws IOException
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public PrintWriter getWriter() throws IOException
- {
- writer = new StringWriter();
- return new PrintWriter(writer);
- }
-
- public String getResult()
- {
- return writer.toString();
- }
-
- public void setCharacterEncoding(String string)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setContentLength(int i)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setContentType(String string)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setBufferSize(int i)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public int getBufferSize()
- {
- return 0; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void flushBuffer() throws IOException
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void resetBuffer()
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public boolean isCommitted()
- {
- return false; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void reset()
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public void setLocale(Locale locale)
- {
- //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public Locale getLocale()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getResponseMarkup()
- {
- return null; //To change body of created methods use File | Settings | File Templates.
- }
- }
-
-}
Deleted: trunk/theme/src/main/org/jboss/portal/test/theme/TestLayoutServiceImpl.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestLayoutServiceImpl.java 2007-04-05 14:14:24 UTC (rev 6925)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestLayoutServiceImpl.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -1,206 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * 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.jboss.portal.test.theme;
-
-import junit.framework.TestCase;
-import org.jboss.portal.common.util.MediaType;
-import org.jboss.portal.common.util.CLResourceLoader;
-import org.jboss.portal.common.util.LoaderResource;
-import org.jboss.portal.theme.LayoutException;
-import org.jboss.portal.theme.PortalLayout;
-import org.jboss.portal.theme.RuntimeContext;
-import org.jboss.portal.theme.ServerRegistrationID;
-import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
-import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
-import org.jboss.portal.theme.impl.LayoutServiceImpl;
-import org.jboss.portal.theme.impl.render.div.DivDecorationRenderer;
-import org.jboss.portal.theme.impl.render.div.DivPortletRenderer;
-import org.jboss.portal.theme.impl.render.div.DivRegionRenderer;
-import org.jboss.portal.theme.impl.render.div.DivWindowRenderer;
-import org.jboss.portal.theme.impl.render.dynamic.DynaDecorationRenderer;
-import org.jboss.portal.theme.impl.render.dynamic.DynaPortletRenderer;
-import org.jboss.portal.theme.impl.render.dynamic.DynaRegionRenderer;
-import org.jboss.portal.theme.impl.render.dynamic.DynaWindowRenderer;
-import org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer;
-import org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer;
-import org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer;
-import org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer;
-import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
-import org.jboss.portal.theme.metadata.RenderSetMetaData;
-import org.jboss.portal.theme.render.PortalRenderSet;
-import org.jboss.xb.binding.Unmarshaller;
-import org.jboss.xb.binding.UnmarshallerFactory;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
- * @author <a href="mailto:roy@jboss.org">Roy Russo</a>
- * @version $Revision$
- */
-public class TestLayoutServiceImpl extends TestCase
-{
- private LayoutServiceImpl layoutService;
- private RuntimeContext runtimeContext;
- private List portalLayouts;
- private List renderSets;
-
- protected void setUp() throws Exception
- {
- layoutService = new LayoutServiceImpl();
-
- layoutService.create();
- layoutService.start();
-
- runtimeContext = TestHelper.createRuntimeContext();
-
- LoaderResource res = new CLResourceLoader().getResource("xml/portal-layouts.xml");
- assertNotNull("Layout xml could not be loaded", res);
- Unmarshaller unmarshaller = null;
- unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
- portalLayouts = (List)unmarshaller.unmarshal(res.asInputStream(), new PortalLayoutMetaDataFactory(), null);
-
- for (Iterator i = portalLayouts.iterator(); i.hasNext();)
- {
- PortalLayoutMetaData layoutMD = (PortalLayoutMetaData)i.next();
- layoutService.addLayout(runtimeContext, layoutMD);
- }
-
- res = new CLResourceLoader().getResource("xml/portal-renderSet.xml");
- unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
- renderSets = (List)unmarshaller.unmarshal(res.asInputStream(), new RenderSetMetaDataFactory(), null);
- for (Iterator i = renderSets.iterator(); i.hasNext();)
- {
- RenderSetMetaData renderSetMD = (RenderSetMetaData)i.next();
- layoutService.addRenderSet(runtimeContext, renderSetMD);
- }
- }
-
- protected void tearDown() throws Exception
- {
- layoutService = null;
- renderSets = null;
- }
-
- public void testCreateLayouts()
- {
- try
- {
- assertTrue(layoutService.getLayouts().size() == 3);
-
- PortalLayout layout = layoutService.getLayout("generic", true);
- assertTrue(layout.getLayoutInfo().getName().equals("generic"));
- layout = layoutService.getLayout("nodesk", true);
- assertTrue(layout.getLayoutInfo().getName().equals("nodesk"));
- layout = layoutService.getLayout("phalanx", true);
- assertTrue(layout.getLayoutInfo().getName().equals("phalanx"));
- }
- catch (Exception e)
- {
- assertFalse("unexpected exception occured", true);
- e.printStackTrace();
- }
- }
-
- public void testGetLayoutInfos()
- {
- PortalLayout layout = layoutService.getLayout("nodesk", true);
- assertTrue(layout.getLayoutInfo().getName().equals("nodesk"));
- assertTrue(layout.getLayoutInfo().getURI().equals("/nodesk/index.jsp"));
- assertTrue(layout.getLayoutInfo().getRegionNames().size() == 2);
-
- layout = layoutService.getLayout("phalanx", true);
- assertTrue(layout.getLayoutInfo().getName().equals("phalanx"));
- assertNotNull(layout.getLayoutInfo().getURI());
-
- layout = layoutService.getLayout("generic", true);
- assertTrue(layout.getLayoutInfo().getName().equals("generic"));
- assertTrue(layout.getLayoutInfo().getRegionNames().size() == 3);
- List regions = layout.getLayoutInfo().getRegionNames();
- assertTrue(regions.get(0).equals("left"));
- assertTrue(regions.get(1).equals("center"));
- assertTrue(regions.get(2).equals("navigation"));
- }
-
- public void testRemoveLayouts()
- {
- try
- {
- assertNotNull(layoutService.getLayout("generic", false));
- layoutService.removeLayouts(runtimeContext.getAppId());
- assertNull(layoutService.getLayout("generic", false));
-
- for (Iterator i = portalLayouts.iterator(); i.hasNext();)
- {
- PortalLayoutMetaData layoutMD = (PortalLayoutMetaData)i.next();
- layoutService.addLayout(runtimeContext, layoutMD);
- }
-
- ServerRegistrationID id = ServerRegistrationID.createPortalLayoutID(runtimeContext.getAppId(), "generic");
- layoutService.removeLayout(id);
- assertNull(layoutService.getLayout("generic", false));
- }
- catch (Exception e)
- {
- assertFalse("unexpected exception occured", true);
- e.printStackTrace();
- }
- }
-
- public void testCreateRenderSets()
- {
- PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
- assertEquals(renderSet.getName(), "divRenderer");
-
- renderSet = layoutService.getRenderSet("emptyRenderer", MediaType.HTML);
- assertEquals(renderSet.getName(), "emptyRenderer");
- }
-
- public void testGetRenderSetInfos() throws Exception
- {
- PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
- assertEquals(renderSet.getName(), "divRenderer");
- assertTrue(renderSet.isAjaxEnabled());
- assertEquals(renderSet.getDecorationRenderer().getClass(), new DynaDecorationRenderer(new DivDecorationRenderer()).getClass());
- assertEquals(renderSet.getPortletRenderer().getClass(), new DynaPortletRenderer(new DivPortletRenderer()).getClass());
- assertEquals(renderSet.getRegionRenderer().getClass(), new DynaRegionRenderer(new DivRegionRenderer()).getClass());
- assertEquals(renderSet.getWindowRenderer().getClass(), new DynaWindowRenderer(new DivWindowRenderer()).getClass());
-
- renderSet = layoutService.getRenderSet("emptyRenderer", MediaType.HTML);
- assertEquals(renderSet.getName(), "emptyRenderer");
- assertFalse(renderSet.isAjaxEnabled());
- assertEquals(renderSet.getDecorationRenderer().getClass(), new EmptyDecorationRenderer().getClass());
- assertEquals(renderSet.getPortletRenderer().getClass(), new EmptyPortletRenderer().getClass());
- assertEquals(renderSet.getRegionRenderer().getClass(), new EmptyRegionRenderer().getClass());
- assertEquals(renderSet.getWindowRenderer().getClass(), new EmptyWindowRenderer().getClass());
- }
-
- public void testRemoveRenderSets() throws LayoutException
- {
- assertNotNull(layoutService.getRenderSet("divRenderer", MediaType.HTML));
- ServerRegistrationID id = ServerRegistrationID.createPortalLayoutID(runtimeContext.getAppId(), "divRenderer");
- layoutService.removeRenderSets(id.getName(0));
- assertNull(layoutService.getRenderSet("divRenderer", MediaType.HTML));
- }
-}
Deleted: trunk/theme/src/main/org/jboss/portal/test/theme/TestThemeServiceImpl.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/TestThemeServiceImpl.java 2007-04-05 14:14:24 UTC (rev 6925)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/TestThemeServiceImpl.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -1,118 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * 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.jboss.portal.test.theme;
-
-import junit.framework.TestCase;
-import org.jboss.portal.common.util.CLResourceLoader;
-import org.jboss.portal.common.util.LoaderResource;
-import org.jboss.portal.theme.PortalTheme;
-import org.jboss.portal.theme.RuntimeContext;
-import org.jboss.portal.theme.ThemeException;
-import org.jboss.portal.theme.ThemeService;
-import org.jboss.portal.theme.deployment.jboss.PortalThemeMetaDataFactory;
-import org.jboss.portal.theme.impl.ThemeServiceImpl;
-import org.jboss.portal.theme.metadata.PortalThemeMetaData;
-import org.jboss.xb.binding.Unmarshaller;
-import org.jboss.xb.binding.UnmarshallerFactory;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
- * @author <a href="mailto:roy@jboss.org">Roy Russo</a>
- * @version $Revision$
- */
-public class TestThemeServiceImpl extends TestCase
-{
- private ThemeService themeService;
- private RuntimeContext runtimeContext;
- List themes;
-
- protected void setUp() throws Exception
- {
- themeService = new ThemeServiceImpl();
-
- runtimeContext = TestHelper.createRuntimeContext();
- LoaderResource res = new CLResourceLoader().getResource("xml/portal-themes.xml");
- Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
-
- themes = (List)unmarshaller.unmarshal(res.asInputStream(), new PortalThemeMetaDataFactory(), null);
- for (Iterator i = themes.iterator(); i.hasNext();)
- {
- PortalThemeMetaData themeMD = (PortalThemeMetaData)i.next();
- themeService.addTheme(runtimeContext, themeMD);
- }
- }
-
- protected void tearDown() throws Exception
- {
- themeService = null;
- }
-
- public void testCreateTheme() throws IOException, ParserConfigurationException, SAXException
- {
- try
- {
- assertTrue(themeService.getThemes().size() == 5);
-
- PortalTheme theme = themeService.getTheme("industrial", false);
- assertTrue(theme.getThemeInfo().getName().equals("industrial"));
- theme = themeService.getTheme("Nphalanx", false);
- assertTrue(theme.getThemeInfo().getName().equals("Nphalanx"));
- theme = themeService.getTheme("mission-critical", false);
- assertTrue(theme.getThemeInfo().getName().equals("mission-critical"));
- theme = themeService.getTheme("Maple", false);
- assertTrue(theme.getThemeInfo().getName().equals("Maple"));
- theme = themeService.getTheme("renaissance", false);
- assertTrue(theme.getThemeInfo().getName().equals("renaissance"));
- }
- catch (Exception e)
- {
- assertTrue("unexpected exception occured", false);
- }
- }
-
- public void testGetThemeInfos()
- {
- PortalTheme theme = themeService.getTheme("industrial", false);
- assertEquals(theme.getThemeInfo().getName(), "industrial");
- assertTrue(theme.getThemeInfo().getScripts().size() == 0);
- assertTrue(theme.getThemeInfo().getLinks().size() == 2);
-
- theme = themeService.getTheme("Nphalanx", false);
- assertEquals(theme.getThemeInfo().getName(), "Nphalanx");
- assertTrue(theme.getThemeInfo().getScripts().size() == 0);
- assertTrue(theme.getThemeInfo().getLinks().size() == 1);
- }
-
- public void testRemoveTheme() throws ThemeException
- {
- assertNotNull(themeService.getTheme("industrial", false));
- themeService.removeTheme(themeService.getTheme("industrial", false));
- assertNull(themeService.getTheme("industrial", false));
- }
-}
\ No newline at end of file
Copied: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestHelper.java (from rev 6924, trunk/theme/src/main/org/jboss/portal/test/theme/TestHelper.java)
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestHelper.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestHelper.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -0,0 +1,799 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.tmp;
+
+import org.jboss.portal.common.invocation.AttributeResolver;
+import org.jboss.portal.portlet.Properties;
+import org.jboss.portal.server.ServerRequest;
+import org.jboss.portal.theme.LayoutService;
+import org.jboss.portal.theme.RuntimeContext;
+import org.jboss.portal.theme.ThemeService;
+import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
+import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
+import org.jboss.portal.theme.impl.LayoutServiceImpl;
+import org.jboss.portal.theme.impl.ThemeServiceImpl;
+import org.jboss.portal.theme.impl.PageServiceImpl;
+import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
+import org.jboss.portal.theme.metadata.RenderSetMetaData;
+import org.jboss.portal.theme.page.PageResult;
+import org.jboss.portal.theme.PageService;
+import org.jboss.portal.theme.page.WindowContext;
+import org.jboss.portal.theme.page.WindowResult;
+import org.jboss.system.ServiceMBeanSupport;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.xml.sax.SAXException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.Principal;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
+ * @version $Revision$
+ */
+public class TestHelper
+{
+ public static PageService createPageService() throws Exception
+ {
+ LayoutService layoutService = new LayoutServiceImpl();
+ ((ServiceMBeanSupport)layoutService).create();
+ ((ServiceMBeanSupport)layoutService).start();
+
+ ThemeService themeService = new ThemeServiceImpl();
+ ((ServiceMBeanSupport)themeService).create();
+ ((ServiceMBeanSupport)themeService).start();
+
+ PageService pageService = new PageServiceImpl();
+ pageService.setLayoutService(layoutService);
+ pageService.setThemeService(themeService);
+ ((ServiceMBeanSupport)pageService).create();
+ ((ServiceMBeanSupport)pageService).start();
+
+ return pageService;
+ }
+
+ public static void destroyPageService(PageService pageService)
+ {
+ ((ServiceMBeanSupport)pageService.getLayoutService()).stop();
+ ((ServiceMBeanSupport)pageService.getThemeService()).stop();
+ ((ServiceMBeanSupport)pageService).stop();
+ ((ServiceMBeanSupport)pageService.getLayoutService()).destroy();
+ ((ServiceMBeanSupport)pageService.getThemeService()).destroy();
+ ((ServiceMBeanSupport)pageService).destroy();
+ }
+
+ public static RuntimeContext createRuntimeContext()
+ {
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ return new RuntimeContext("TestAppId", new TestContext(), "TestContextPath", loader);
+ }
+
+ public static WindowResult createWindowResult(String windowTitle, String content)
+ {
+ // setup the window result
+ return createWindowResult(windowTitle, content, Collections.EMPTY_MAP);
+ }
+
+ public static WindowResult createWindowResult(String title, String content, Map windowProps)
+ {
+ // setup the window result
+ Map actionsMap = Collections.EMPTY_MAP;
+ Properties responseProps = null;
+ String headerChars = null;
+ return new WindowResult(title, content, actionsMap, windowProps, responseProps, headerChars, null, null);
+ }
+
+ public static RenderSetMetaData createRenderSetMD() throws Exception
+ {
+ List renderSets = (List)UnmarshallerFactory.newInstance().newUnmarshaller().unmarshal(createRenderSetDescriptor(), new RenderSetMetaDataFactory(), null);
+ return (RenderSetMetaData)renderSets.get(0);
+ }
+
+ public static List createRenderSetMDList() throws Exception
+ {
+ List renderSets = (List)UnmarshallerFactory.newInstance().newUnmarshaller().unmarshal(createRenderSetDescriptor(), new RenderSetMetaDataFactory(), null);
+ return renderSets;
+ }
+
+ private static Reader createRenderSetDescriptor()
+ throws IOException, SAXException, ParserConfigurationException
+ {
+ StringBuffer testString = new StringBuffer();
+ testString.append("<portal-renderSet>");
+ testString.append("<renderSet name=\"emptyRenderer\">");
+ testString.append("<set content-type=\"text/html\">");
+ testString.append("<region-renderer>org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer</region-renderer>");
+ testString.append("<window-renderer>org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer</window-renderer>");
+ testString.append("<portlet-renderer>org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer</portlet-renderer>");
+ testString.append("<decoration-renderer>org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer</decoration-renderer>");
+ testString.append("</set>");
+ testString.append("</renderSet>");
+
+ testString.append("<renderSet name=\"divRenderer\">");
+ testString.append("<set content-type=\"text/html\">");
+ testString.append("<region-renderer>org.jboss.portal.theme.impl.render.div.DivRegionRenderer</region-renderer>");
+ testString.append("<window-renderer>org.jboss.portal.theme.impl.render.div.DivWindowRenderer</window-renderer>");
+ testString.append("<portlet-renderer>org.jboss.portal.theme.impl.render.div.DivPortletRenderer</portlet-renderer>");
+ testString.append("<decoration-renderer>org.jboss.portal.theme.impl.render.div.DivDecorationRenderer</decoration-renderer>");
+ testString.append("</set>");
+ testString.append("</renderSet>");
+
+ testString.append("</portal-renderSet>");
+
+ return new StringReader(testString.toString());
+ }
+
+ public static PortalLayoutMetaData createLayoutMD() throws Exception
+ {
+ // create a descriptor for the tests
+ StringBuffer testString = new StringBuffer();
+ testString.append("<layouts>");
+ testString.append("<layout>");
+ testString.append("<name>TestLayout</name>");
+ testString.append("<uri>/test/index.jsp</uri>");
+ testString.append("<regions>");
+ testString.append("<region name=\"left\"/>");
+ testString.append("<region name=\"center\"/>");
+ testString.append("</regions>");
+ testString.append("</layout>");
+ testString.append("</layouts>");
+ List layoutMDList = (List)UnmarshallerFactory.newInstance().newUnmarshaller().unmarshal(new StringReader(testString.toString()), new PortalLayoutMetaDataFactory(), null);
+ return (PortalLayoutMetaData)layoutMDList.get(0);
+ }
+
+ public static PageResult createPageResult(AttributeResolver navCtx, String pageName,
+ Map pageProperties, Map portalProperties, WindowContext[] windows)
+ {
+ PageResult pageResult = new PageResult(pageName, pageProperties, portalProperties);
+ for (int i = 0; i < windows.length; i++)
+ {
+ pageResult.addWindowContext(windows[i]);
+ }
+ return pageResult;
+ }
+
+ public static ServerRequest createServerRequest()
+ {
+ final HttpServletRequest clientRequest = new TestHttpServletRequest();
+ return new ServerRequest(null);
+ }
+
+ public static class TestContext implements ServletContext
+ {
+ public TestContext()
+ {
+
+ }
+
+ public ServletContext getContext(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getMajorVersion()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getMinorVersion()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getMimeType(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Set getResourcePaths(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public URL getResource(String string) throws MalformedURLException
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public InputStream getResourceAsStream(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public RequestDispatcher getRequestDispatcher(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public RequestDispatcher getNamedDispatcher(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Servlet getServlet(String string) throws ServletException
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getServlets()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getServletNames()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void log(String string)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void log(Exception exception, String string)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void log(String string, Throwable throwable)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRealPath(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getServerInfo()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getInitParameter(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getInitParameterNames()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Object getAttribute(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getAttributeNames()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setAttribute(String string, Object object)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void removeAttribute(String string)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getServletContextName()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+ }
+
+
+ // request
+ public static class TestHttpServletRequest implements HttpServletRequest
+ {
+ private Map attributes;
+
+ public TestHttpServletRequest()
+ {
+ attributes = new HashMap();
+ }
+
+ public String getAuthType()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Cookie[] getCookies()
+ {
+ return new Cookie[0]; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public long getDateHeader(String string)
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getHeader(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getHeaders(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getHeaderNames()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getIntHeader(String string)
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getMethod()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getPathInfo()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getPathTranslated()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getContextPath()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getQueryString()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRemoteUser()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isUserInRole(String string)
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Principal getUserPrincipal()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRequestedSessionId()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRequestURI()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public StringBuffer getRequestURL()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getServletPath()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public HttpSession getSession(boolean b)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public HttpSession getSession()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isRequestedSessionIdValid()
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isRequestedSessionIdFromCookie()
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isRequestedSessionIdFromURL()
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isRequestedSessionIdFromUrl()
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Object getAttribute(String key)
+ {
+ return attributes.get(key);
+ }
+
+ public Enumeration getAttributeNames()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getCharacterEncoding()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setCharacterEncoding(String string) throws UnsupportedEncodingException
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getContentLength()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getContentType()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public ServletInputStream getInputStream() throws IOException
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getParameter(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getParameterNames()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String[] getParameterValues(String string)
+ {
+ return new String[0]; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Map getParameterMap()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getProtocol()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getScheme()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getServerName()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getServerPort()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public BufferedReader getReader() throws IOException
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRemoteAddr()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRemoteHost()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setAttribute(String key, Object value)
+ {
+ attributes.put(key, value);
+ }
+
+ public void removeAttribute(String key)
+ {
+ attributes.remove(key);
+ }
+
+ public Locale getLocale()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Enumeration getLocales()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isSecure()
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public RequestDispatcher getRequestDispatcher(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getRealPath(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getRemotePort()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getLocalName()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getLocalAddr()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getLocalPort()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+ }
+
+ // response
+ public static class TestHttpServletResponse implements HttpServletResponse
+ {
+ private StringWriter writer;
+
+ public TestHttpServletResponse()
+ {
+
+ }
+
+ public void addCookie(Cookie cookie)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean containsHeader(String string)
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String encodeURL(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String encodeRedirectURL(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String encodeUrl(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String encodeRedirectUrl(String string)
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void sendError(int i, String string) throws IOException
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void sendError(int i) throws IOException
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void sendRedirect(String string) throws IOException
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setDateHeader(String string, long l)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void addDateHeader(String string, long l)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setHeader(String string, String string1)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void addHeader(String string, String string1)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setIntHeader(String string, int i)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void addIntHeader(String string, int i)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setStatus(int i)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setStatus(int i, String string)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getCharacterEncoding()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getContentType()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public ServletOutputStream getOutputStream() throws IOException
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public PrintWriter getWriter() throws IOException
+ {
+ writer = new StringWriter();
+ return new PrintWriter(writer);
+ }
+
+ public String getResult()
+ {
+ return writer.toString();
+ }
+
+ public void setCharacterEncoding(String string)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setContentLength(int i)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setContentType(String string)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setBufferSize(int i)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public int getBufferSize()
+ {
+ return 0; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void flushBuffer() throws IOException
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void resetBuffer()
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public boolean isCommitted()
+ {
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void reset()
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void setLocale(Locale locale)
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public Locale getLocale()
+ {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public String getResponseMarkup()
+ {
+ return null; //To change body of created methods use File | Settings | File Templates.
+ }
+ }
+
+}
Property changes on: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestHelper.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Copied: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestLayoutServiceImpl.java (from rev 6924, trunk/theme/src/main/org/jboss/portal/test/theme/TestLayoutServiceImpl.java)
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestLayoutServiceImpl.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestLayoutServiceImpl.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -0,0 +1,206 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.tmp;
+
+import junit.framework.TestCase;
+import org.jboss.portal.common.util.MediaType;
+import org.jboss.portal.common.util.CLResourceLoader;
+import org.jboss.portal.common.util.LoaderResource;
+import org.jboss.portal.theme.LayoutException;
+import org.jboss.portal.theme.PortalLayout;
+import org.jboss.portal.theme.RuntimeContext;
+import org.jboss.portal.theme.ServerRegistrationID;
+import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
+import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
+import org.jboss.portal.theme.impl.LayoutServiceImpl;
+import org.jboss.portal.theme.impl.render.div.DivDecorationRenderer;
+import org.jboss.portal.theme.impl.render.div.DivPortletRenderer;
+import org.jboss.portal.theme.impl.render.div.DivRegionRenderer;
+import org.jboss.portal.theme.impl.render.div.DivWindowRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaDecorationRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaPortletRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaRegionRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaWindowRenderer;
+import org.jboss.portal.theme.impl.render.empty.EmptyDecorationRenderer;
+import org.jboss.portal.theme.impl.render.empty.EmptyPortletRenderer;
+import org.jboss.portal.theme.impl.render.empty.EmptyRegionRenderer;
+import org.jboss.portal.theme.impl.render.empty.EmptyWindowRenderer;
+import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
+import org.jboss.portal.theme.metadata.RenderSetMetaData;
+import org.jboss.portal.theme.render.PortalRenderSet;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
+ * @author <a href="mailto:roy@jboss.org">Roy Russo</a>
+ * @version $Revision$
+ */
+public class TestLayoutServiceImpl extends TestCase
+{
+ private LayoutServiceImpl layoutService;
+ private RuntimeContext runtimeContext;
+ private List portalLayouts;
+ private List renderSets;
+
+ protected void setUp() throws Exception
+ {
+ layoutService = new LayoutServiceImpl();
+
+ layoutService.create();
+ layoutService.start();
+
+ runtimeContext = TestHelper.createRuntimeContext();
+
+ LoaderResource res = new CLResourceLoader().getResource("xml/portal-layouts.xml");
+ assertNotNull("Layout xml could not be loaded", res);
+ Unmarshaller unmarshaller = null;
+ unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+ portalLayouts = (List)unmarshaller.unmarshal(res.asInputStream(), new PortalLayoutMetaDataFactory(), null);
+
+ for (Iterator i = portalLayouts.iterator(); i.hasNext();)
+ {
+ PortalLayoutMetaData layoutMD = (PortalLayoutMetaData)i.next();
+ layoutService.addLayout(runtimeContext, layoutMD);
+ }
+
+ res = new CLResourceLoader().getResource("xml/portal-renderSet.xml");
+ unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+ renderSets = (List)unmarshaller.unmarshal(res.asInputStream(), new RenderSetMetaDataFactory(), null);
+ for (Iterator i = renderSets.iterator(); i.hasNext();)
+ {
+ RenderSetMetaData renderSetMD = (RenderSetMetaData)i.next();
+ layoutService.addRenderSet(runtimeContext, renderSetMD);
+ }
+ }
+
+ protected void tearDown() throws Exception
+ {
+ layoutService = null;
+ renderSets = null;
+ }
+
+ public void testCreateLayouts()
+ {
+ try
+ {
+ assertTrue(layoutService.getLayouts().size() == 3);
+
+ PortalLayout layout = layoutService.getLayout("generic", true);
+ assertTrue(layout.getLayoutInfo().getName().equals("generic"));
+ layout = layoutService.getLayout("nodesk", true);
+ assertTrue(layout.getLayoutInfo().getName().equals("nodesk"));
+ layout = layoutService.getLayout("phalanx", true);
+ assertTrue(layout.getLayoutInfo().getName().equals("phalanx"));
+ }
+ catch (Exception e)
+ {
+ assertFalse("unexpected exception occured", true);
+ e.printStackTrace();
+ }
+ }
+
+ public void testGetLayoutInfos()
+ {
+ PortalLayout layout = layoutService.getLayout("nodesk", true);
+ assertTrue(layout.getLayoutInfo().getName().equals("nodesk"));
+ assertTrue(layout.getLayoutInfo().getURI().equals("/nodesk/index.jsp"));
+ assertTrue(layout.getLayoutInfo().getRegionNames().size() == 2);
+
+ layout = layoutService.getLayout("phalanx", true);
+ assertTrue(layout.getLayoutInfo().getName().equals("phalanx"));
+ assertNotNull(layout.getLayoutInfo().getURI());
+
+ layout = layoutService.getLayout("generic", true);
+ assertTrue(layout.getLayoutInfo().getName().equals("generic"));
+ assertTrue(layout.getLayoutInfo().getRegionNames().size() == 3);
+ List regions = layout.getLayoutInfo().getRegionNames();
+ assertTrue(regions.get(0).equals("left"));
+ assertTrue(regions.get(1).equals("center"));
+ assertTrue(regions.get(2).equals("navigation"));
+ }
+
+ public void testRemoveLayouts()
+ {
+ try
+ {
+ assertNotNull(layoutService.getLayout("generic", false));
+ layoutService.removeLayouts(runtimeContext.getAppId());
+ assertNull(layoutService.getLayout("generic", false));
+
+ for (Iterator i = portalLayouts.iterator(); i.hasNext();)
+ {
+ PortalLayoutMetaData layoutMD = (PortalLayoutMetaData)i.next();
+ layoutService.addLayout(runtimeContext, layoutMD);
+ }
+
+ ServerRegistrationID id = ServerRegistrationID.createPortalLayoutID(runtimeContext.getAppId(), "generic");
+ layoutService.removeLayout(id);
+ assertNull(layoutService.getLayout("generic", false));
+ }
+ catch (Exception e)
+ {
+ assertFalse("unexpected exception occured", true);
+ e.printStackTrace();
+ }
+ }
+
+ public void testCreateRenderSets()
+ {
+ PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
+ assertEquals(renderSet.getName(), "divRenderer");
+
+ renderSet = layoutService.getRenderSet("emptyRenderer", MediaType.HTML);
+ assertEquals(renderSet.getName(), "emptyRenderer");
+ }
+
+ public void testGetRenderSetInfos() throws Exception
+ {
+ PortalRenderSet renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
+ assertEquals(renderSet.getName(), "divRenderer");
+ assertTrue(renderSet.isAjaxEnabled());
+ assertEquals(renderSet.getDecorationRenderer().getClass(), new DynaDecorationRenderer(new DivDecorationRenderer()).getClass());
+ assertEquals(renderSet.getPortletRenderer().getClass(), new DynaPortletRenderer(new DivPortletRenderer()).getClass());
+ assertEquals(renderSet.getRegionRenderer().getClass(), new DynaRegionRenderer(new DivRegionRenderer()).getClass());
+ assertEquals(renderSet.getWindowRenderer().getClass(), new DynaWindowRenderer(new DivWindowRenderer()).getClass());
+
+ renderSet = layoutService.getRenderSet("emptyRenderer", MediaType.HTML);
+ assertEquals(renderSet.getName(), "emptyRenderer");
+ assertFalse(renderSet.isAjaxEnabled());
+ assertEquals(renderSet.getDecorationRenderer().getClass(), new EmptyDecorationRenderer().getClass());
+ assertEquals(renderSet.getPortletRenderer().getClass(), new EmptyPortletRenderer().getClass());
+ assertEquals(renderSet.getRegionRenderer().getClass(), new EmptyRegionRenderer().getClass());
+ assertEquals(renderSet.getWindowRenderer().getClass(), new EmptyWindowRenderer().getClass());
+ }
+
+ public void testRemoveRenderSets() throws LayoutException
+ {
+ assertNotNull(layoutService.getRenderSet("divRenderer", MediaType.HTML));
+ ServerRegistrationID id = ServerRegistrationID.createPortalLayoutID(runtimeContext.getAppId(), "divRenderer");
+ layoutService.removeRenderSets(id.getName(0));
+ assertNull(layoutService.getRenderSet("divRenderer", MediaType.HTML));
+ }
+}
Property changes on: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestLayoutServiceImpl.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Copied: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestThemeServiceImpl.java (from rev 6924, trunk/theme/src/main/org/jboss/portal/test/theme/TestThemeServiceImpl.java)
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestThemeServiceImpl.java (rev 0)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestThemeServiceImpl.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -0,0 +1,118 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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.jboss.portal.test.theme.tmp;
+
+import junit.framework.TestCase;
+import org.jboss.portal.common.util.CLResourceLoader;
+import org.jboss.portal.common.util.LoaderResource;
+import org.jboss.portal.theme.PortalTheme;
+import org.jboss.portal.theme.RuntimeContext;
+import org.jboss.portal.theme.ThemeException;
+import org.jboss.portal.theme.ThemeService;
+import org.jboss.portal.theme.deployment.jboss.PortalThemeMetaDataFactory;
+import org.jboss.portal.theme.impl.ThemeServiceImpl;
+import org.jboss.portal.theme.metadata.PortalThemeMetaData;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>
+ * @author <a href="mailto:roy@jboss.org">Roy Russo</a>
+ * @version $Revision$
+ */
+public class TestThemeServiceImpl extends TestCase
+{
+ private ThemeService themeService;
+ private RuntimeContext runtimeContext;
+ List themes;
+
+ protected void setUp() throws Exception
+ {
+ themeService = new ThemeServiceImpl();
+
+ runtimeContext = TestHelper.createRuntimeContext();
+ LoaderResource res = new CLResourceLoader().getResource("xml/portal-themes.xml");
+ Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+
+ themes = (List)unmarshaller.unmarshal(res.asInputStream(), new PortalThemeMetaDataFactory(), null);
+ for (Iterator i = themes.iterator(); i.hasNext();)
+ {
+ PortalThemeMetaData themeMD = (PortalThemeMetaData)i.next();
+ themeService.addTheme(runtimeContext, themeMD);
+ }
+ }
+
+ protected void tearDown() throws Exception
+ {
+ themeService = null;
+ }
+
+ public void testCreateTheme() throws IOException, ParserConfigurationException, SAXException
+ {
+ try
+ {
+ assertTrue(themeService.getThemes().size() == 5);
+
+ PortalTheme theme = themeService.getTheme("industrial", false);
+ assertTrue(theme.getThemeInfo().getName().equals("industrial"));
+ theme = themeService.getTheme("Nphalanx", false);
+ assertTrue(theme.getThemeInfo().getName().equals("Nphalanx"));
+ theme = themeService.getTheme("mission-critical", false);
+ assertTrue(theme.getThemeInfo().getName().equals("mission-critical"));
+ theme = themeService.getTheme("Maple", false);
+ assertTrue(theme.getThemeInfo().getName().equals("Maple"));
+ theme = themeService.getTheme("renaissance", false);
+ assertTrue(theme.getThemeInfo().getName().equals("renaissance"));
+ }
+ catch (Exception e)
+ {
+ assertTrue("unexpected exception occured", false);
+ }
+ }
+
+ public void testGetThemeInfos()
+ {
+ PortalTheme theme = themeService.getTheme("industrial", false);
+ assertEquals(theme.getThemeInfo().getName(), "industrial");
+ assertTrue(theme.getThemeInfo().getScripts().size() == 0);
+ assertTrue(theme.getThemeInfo().getLinks().size() == 2);
+
+ theme = themeService.getTheme("Nphalanx", false);
+ assertEquals(theme.getThemeInfo().getName(), "Nphalanx");
+ assertTrue(theme.getThemeInfo().getScripts().size() == 0);
+ assertTrue(theme.getThemeInfo().getLinks().size() == 1);
+ }
+
+ public void testRemoveTheme() throws ThemeException
+ {
+ assertNotNull(themeService.getTheme("industrial", false));
+ themeService.removeTheme(themeService.getTheme("industrial", false));
+ assertNull(themeService.getTheme("industrial", false));
+ }
+}
\ No newline at end of file
Property changes on: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/TestThemeServiceImpl.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Copied: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata (from rev 6924, trunk/theme/src/main/org/jboss/portal/test/theme/metadata)
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestPortalLayoutMetaData.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/metadata/TestPortalLayoutMetaData.java 2007-04-05 14:12:12 UTC (rev 6924)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestPortalLayoutMetaData.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -20,7 +20,7 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
-package org.jboss.portal.test.theme.metadata;
+package org.jboss.portal.test.theme.tmp.metadata;
import junit.framework.TestCase;
import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestPortalThemeMetaData.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/metadata/TestPortalThemeMetaData.java 2007-04-05 14:12:12 UTC (rev 6924)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestPortalThemeMetaData.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -20,7 +20,7 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
-package org.jboss.portal.test.theme.metadata;
+package org.jboss.portal.test.theme.tmp.metadata;
import junit.framework.TestCase;
import org.jboss.portal.theme.deployment.jboss.PortalThemeMetaDataFactory;
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestRenderSetMetaData.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/metadata/TestRenderSetMetaData.java 2007-04-05 14:12:12 UTC (rev 6924)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/metadata/TestRenderSetMetaData.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -20,7 +20,7 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
-package org.jboss.portal.test.theme.metadata;
+package org.jboss.portal.test.theme.tmp.metadata;
import junit.framework.TestCase;
import org.jboss.portal.common.util.MediaType;
Copied: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render (from rev 6924, trunk/theme/src/main/org/jboss/portal/test/theme/render)
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRenderedMarkup.java 2007-04-05 14:12:12 UTC (rev 6924)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/render/TestRenderedMarkup.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -19,7 +19,7 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
-package org.jboss.portal.test.theme.render;
+package org.jboss.portal.test.theme.tmp.render;
import junit.framework.TestCase;
import org.jboss.portal.common.util.MediaType;
@@ -27,7 +27,7 @@
import org.jboss.portal.common.util.LoaderResource;
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.server.ServerRequest;
-import org.jboss.portal.test.theme.TestHelper;
+import org.jboss.portal.test.theme.tmp.TestHelper;
import org.jboss.portal.theme.LayoutService;
import org.jboss.portal.theme.PortalLayout;
import org.jboss.portal.theme.PortalTheme;
Copied: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet (from rev 6924, trunk/theme/src/main/org/jboss/portal/test/theme/servlet)
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestAJAXServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestAJAXServlet.java 2007-04-05 14:12:12 UTC (rev 6924)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestAJAXServlet.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -21,7 +21,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
-package org.jboss.portal.test.theme.servlet;
+package org.jboss.portal.test.theme.tmp.servlet;
import org.jboss.logging.Logger;
Modified: trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/servlet/TestThemeServlet.java 2007-04-05 14:12:12 UTC (rev 6924)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/tmp/servlet/TestThemeServlet.java 2007-04-05 15:09:59 UTC (rev 6926)
@@ -21,7 +21,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
******************************************************************************/
-package org.jboss.portal.test.theme.servlet;
+package org.jboss.portal.test.theme.tmp.servlet;
import org.jboss.mx.util.MBeanProxy;
import org.jboss.mx.util.MBeanServerLocator;
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 2007-04-05 14:14:24 UTC (rev 6925)
+++ trunk/theme/src/resources/test/theme-test-war/WEB-INF/web.xml 2007-04-05 15:09:59 UTC (rev 6926)
@@ -32,13 +32,13 @@
<description>Handles test xmlhttprequests and callbacks from content rendered by the
TestThemeServlet</description>
<servlet-name>TestAJAXServlet</servlet-name>
- <servlet-class>org.jboss.portal.test.theme.servlet.TestAJAXServlet</servlet-class>
+ <servlet-class>org.jboss.portal.test.theme.tmp.servlet.TestAJAXServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<description>Renders a theme for testing</description>
<servlet-name>TestThemeServlet</servlet-name>
- <servlet-class>org.jboss.portal.test.theme.servlet.TestThemeServlet</servlet-class>
+ <servlet-class>org.jboss.portal.test.theme.tmp.servlet.TestThemeServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
17 years, 3 months