You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by at...@apache.org on 2010/04/07 23:31:28 UTC
svn commit: r931694 - in
/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags:
PortletModeDropDownTag.java PortletRenderTag.java PortletTag.java
PortletTitleTag.java
Author: ate
Date: Wed Apr 7 21:31:27 2010
New Revision: 931694
URL: http://svn.apache.org/viewvc?rev=931694&view=rev
Log:
PLUTO-567: Make Pluto work even if main portlets are not available.
Patch provided by Gonzalo Aguilar.
I only slightly modified it by adding debug logging to the PortletTag try-catch exception handling block.
Thanks for the patch Gonzalo.
Modified:
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletModeDropDownTag.java
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletRenderTag.java
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTitleTag.java
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletModeDropDownTag.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletModeDropDownTag.java?rev=931694&r1=931693&r2=931694&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletModeDropDownTag.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletModeDropDownTag.java Wed Apr 7 21:31:27 2010
@@ -108,47 +108,69 @@ public class PortletModeDropDownTag exte
servletContext.getAttribute(AttributeKeys.PORTLET_CONTAINER);
// Create the portlet window to render.
- PortletWindow window = new PortletWindowImpl(container, windowConfig, requestedPortalUrl);
+ PortletWindow window = null;
+
+
+ try
+ {
+ // If this fails it means that the portlet will be not available.
+ // Render Tag will take care of it.
+ window = new PortletWindowImpl(container, windowConfig, requestedPortalUrl);
+ }
+ catch(RuntimeException ex)
+ {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("The portlet " + windowConfig.getPortletName() + " is not available. Is already deployed?");
+ }
+ }
- PortletMode currentMode = requestedPortalUrl.getPortletMode(window.getId().getStringId());
-
//start the markup
StringBuffer tag = new StringBuffer();
-// String strCurrentMode = currentMode.toString();
-// tag.append("Current mode: " + currentMode.toString());
- tag.append("<form action=\"\" name=\"modeSelectionForm\" style=\"display:inline\"><select onchange=\"self.location=this.options[this.selectedIndex].value\">");
- Set<PortletMode> modeSet = null;
- try {
- modeSet = driverConfig.getSupportedPortletModes(evaluatedPortletId);
- } catch (PortletContainerException e) {
- throw new JspException(e);
- }
-
- if (modeSet != null) {
- Iterator<PortletMode> i = modeSet.iterator();
- while (i.hasNext()) {
- PortletMode mode = i.next();
-
- PortalURL portalUrl = portalEnv.createPortalURL();
- portalUrl.setPortletMode(evaluatedPortletId, mode);
-
- // Build a string buffer containing the anchor tag
- tag.append("<option value=\"" + portalUrl.toString() + "\"");
- //Add 'selected' attribute for current mode.
- if (mode.equals(currentMode)) {
- tag.append(" selected=\"true\"");
- }
- tag.append(">");
- if (driverConfig.isPortletManagedMode(evaluatedPortletId, mode.toString())) {
- tag.append(getCustomModeDecorationName(driverConfig, mode));
- } else {
- tag.append(mode.toString().toUpperCase());
- }
-// tag.append(mode.toString().toUpperCase());
- tag.append("</option>");
- }
- }
- tag.append("</select></form>");
+
+ // Do not render if we don't have a window.
+ if(window!=null)
+ {
+ PortletMode currentMode = requestedPortalUrl.getPortletMode(window.getId().getStringId());
+
+
+ // String strCurrentMode = currentMode.toString();
+ // tag.append("Current mode: " + currentMode.toString());
+ tag.append("<form action=\"\" name=\"modeSelectionForm\" style=\"display:inline\"><select onchange=\"self.location=this.options[this.selectedIndex].value\">");
+ Set<PortletMode> modeSet = null;
+ try {
+ modeSet = driverConfig.getSupportedPortletModes(evaluatedPortletId);
+ } catch (PortletContainerException e) {
+ throw new JspException(e);
+ }
+
+ if (modeSet != null) {
+ Iterator<PortletMode> i = modeSet.iterator();
+ while (i.hasNext()) {
+ PortletMode mode = i.next();
+
+ PortalURL portalUrl = portalEnv.createPortalURL();
+ portalUrl.setPortletMode(evaluatedPortletId, mode);
+
+ // Build a string buffer containing the anchor tag
+ tag.append("<option value=\"" + portalUrl.toString() + "\"");
+ //Add 'selected' attribute for current mode.
+ if (mode.equals(currentMode)) {
+ tag.append(" selected=\"true\"");
+ }
+ tag.append(">");
+ if (driverConfig.isPortletManagedMode(evaluatedPortletId, mode.toString())) {
+ tag.append(getCustomModeDecorationName(driverConfig, mode));
+ } else {
+ tag.append(mode.toString().toUpperCase());
+ }
+ // tag.append(mode.toString().toUpperCase());
+ tag.append("</option>");
+ }
+ }
+ tag.append("</select></form>");
+
+ }
+
// Print the mode anchor tag.
try {
JspWriter out = pageContext.getOut();
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletRenderTag.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletRenderTag.java?rev=931694&r1=931693&r2=931694&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletRenderTag.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletRenderTag.java Wed Apr 7 21:31:27 2010
@@ -22,6 +22,8 @@ import java.io.PrintWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
+import org.apache.pluto.driver.services.portal.PortletWindowConfig;
+
/**
* The portlet render tag is used to print portlet rendering result (or error
* details) to the page.
@@ -60,7 +62,10 @@ public class PortletRenderTag extends Ta
// Otherwise, print the error stack trace.
else {
try {
- pageContext.getOut().print("Error rendering portlet.");
+ PortletWindowConfig windowConfig =
+ PortletWindowConfig.fromId(parentTag.getEvaluatedPortletId());
+
+ pageContext.getOut().print("Error rendering portlet " + windowConfig.getPortletName() + ".");
pageContext.getOut().print("<pre>");
parentTag.getThrowable().printStackTrace(
new PrintWriter(pageContext.getOut()));
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java?rev=931694&r1=931693&r2=931694&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java Wed Apr 7 21:31:27 2010
@@ -16,6 +16,7 @@
*/
package org.apache.pluto.driver.tags;
+import java.io.StringWriter;
import java.util.Iterator;
import java.util.Map;
@@ -125,23 +126,39 @@ public class PortletTag extends BodyTagS
servletContext.getAttribute(AttributeKeys.PORTLET_CONTAINER);
// Create the portlet window to render.
- PortletWindow window = new PortletWindowImpl(container, windowConfig, portalURL);
-
- // Check if someone else is maximized. If yes, don't show content.
- Map windowStates = portalURL.getWindowStates();
- for (Iterator it = windowStates.keySet().iterator(); it.hasNext(); ) {
- String windowId = (String) it.next();
- WindowState windowState = (WindowState) windowStates.get(windowId);
- if (WindowState.MAXIMIZED.equals(windowState)
- && !window.getId().getStringId().equals(windowId)) {
- return SKIP_BODY;
- }
+ PortletWindow window = null;
+
+
+ try {
+ window = new PortletWindowImpl(container, windowConfig, portalURL);
+ } catch(RuntimeException e) // FIXME: Prose a change to anything else, handle it.
+ {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("The portlet " + windowConfig.getPortletName() + " is not available. Is already deployed?");
+ }
}
-
- // Create portal servlet response to wrap the original
- // HTTP servlet response.
- PortalServletResponse portalResponse = new PortalServletResponse(
+
+ // Create portal servlet response to wrap the original
+ // HTTP servlet response.
+ PortalServletResponse portalResponse = new PortalServletResponse(
(HttpServletResponse) pageContext.getResponse());
+
+
+ if(window!=null)
+ {
+ // Check if someone else is maximized. If yes, don't show content.
+ Map windowStates = portalURL.getWindowStates();
+ for (Iterator it = windowStates.keySet().iterator(); it.hasNext(); ) {
+ String windowId = (String) it.next();
+ WindowState windowState = (WindowState) windowStates.get(windowId);
+ if (WindowState.MAXIMIZED.equals(windowState)
+ && !window.getId().getStringId().equals(windowId)) {
+ return SKIP_BODY;
+ }
+ }
+
+
+ }
// Render the portlet and cache the response.
try {
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTitleTag.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTitleTag.java?rev=931694&r1=931693&r2=931694&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTitleTag.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTitleTag.java Wed Apr 7 21:31:27 2010
@@ -24,6 +24,7 @@ import javax.servlet.jsp.tagext.TagSuppo
import org.apache.pluto.container.PortletWindow;
import org.apache.pluto.driver.AttributeKeys;
+import org.apache.pluto.driver.services.portal.PortletWindowConfig;
/**
* The portlet title tag is used to print the dynamic portlet title to the page.
@@ -57,8 +58,18 @@ public class PortletTitleTag extends Tag
// Print out the portlet title to page.
try {
- pageContext.getOut().print(pageContext.getRequest().getAttribute(
- AttributeKeys.PORTLET_TITLE));
+ String title = (String) pageContext.getRequest().getAttribute(
+ AttributeKeys.PORTLET_TITLE);
+
+ if(title == null)
+ {
+ PortletWindowConfig windowConfig =
+ PortletWindowConfig.fromId(parentTag.getEvaluatedPortletId());
+
+ title = "[ " + windowConfig.getPortletName() + " not ready ]";
+ }
+
+ pageContext.getOut().print(title);
} catch (IOException ex) {
throw new JspException(ex);
}