You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-dev@portals.apache.org by bl...@apache.org on 2004/02/09 16:42:16 UTC
cvs commit: jakarta-pluto/portal/src/java/org/apache/pluto/portalImpl/aggregation PortletFragment.java
blumm 2004/02/09 07:42:16
Modified: portal/src/java/org/apache/pluto/portalImpl/aggregation
PortletFragment.java
Added: portal/src/webapp/WEB-INF/aggregation
PortletFragmentFooter.jsp PortletFragmentHeader.jsp
Log:
Submitted by: Nick Lothian/nl@essential.com.au
Better customization of Pluto's portal by introduction of
PortletFragmentFooter.jsp and PortletFragmentHeader.jsp
Now
1) All Portlet Modes are displayed (not just the non-active ones), but only
the non-active ones have a link.
2) All Window States are displayed (not just the non-active ones), but only
the non-active ones have a link.
3) There is a " | " between the Portlet Modes and the Window States.
Revision Changes Path
1.1 jakarta-pluto/portal/src/webapp/WEB-INF/aggregation/PortletFragmentFooter.jsp
Index: PortletFragmentFooter.jsp
===================================================================
</td>
</tr>
</table>
1.1 jakarta-pluto/portal/src/webapp/WEB-INF/aggregation/PortletFragmentHeader.jsp
Index: PortletFragmentHeader.jsp
===================================================================
<jsp:useBean id="portletInfo" type="org.apache.pluto.portalImpl.aggregation.PortletFragment.PortletInfo" scope="request" />
<table border='1' cellpadding='1' cellspacing='1' width='100%' height='90%'>
<tr>
<td bgcolor='#DDDDDD'>
<table border='0' cellpadding='0' cellspacing='0' width='100%' height='10px'>
<tr>
<td>
<I><b><%= portletInfo.getTitle() %></b></I>
</td>
<td align='right'>
<font size='-3'>
<%
java.util.List modeList = portletInfo.getAvailablePortletModes();
java.util.Collections.sort(modeList);
for (java.util.Iterator iter = modeList.iterator(); iter.hasNext();) {
org.apache.pluto.portalImpl.aggregation.PortletFragment.PortletModeInfo modeInfo = (org.apache.pluto.portalImpl.aggregation.PortletFragment.PortletModeInfo) iter.next();
if (!modeInfo.isCurrent()) {
%>
<a href="<%=modeInfo.getUrl() %>">
<%
}
out.print(modeInfo.getName());
if (!modeInfo.isCurrent()) {
%>
</a>
<%
}
}
%>
<%
java.util.List windowStateList = portletInfo.getAvailablePortletWindowStates();
java.util.Collections.sort(windowStateList);
if (modeList.size() > 0 && windowStateList.size() > 0) {
%>
|
<%
}
for (java.util.Iterator iter = windowStateList.iterator(); iter.hasNext();) {
org.apache.pluto.portalImpl.aggregation.PortletFragment.PortletWindowStateInfo stateInfo = (org.apache.pluto.portalImpl.aggregation.PortletFragment.PortletWindowStateInfo) iter.next();
if (!stateInfo.isCurrent()) {
%>
<a href="<%=stateInfo.getUrl()%>">
<%
}
out.println(stateInfo.getLabel());
if (!stateInfo.isCurrent()) {
%>
</a>
<%
}
}
%>
</font>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
1.3 +398 -189 jakarta-pluto/portal/src/java/org/apache/pluto/portalImpl/aggregation/PortletFragment.java
Index: PortletFragment.java
===================================================================
RCS file: /home/cvs/jakarta-pluto/portal/src/java/org/apache/pluto/portalImpl/aggregation/PortletFragment.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PortletFragment.java 20 Jan 2004 09:30:10 -0000 1.2
+++ PortletFragment.java 9 Feb 2004 15:42:16 -0000 1.3
@@ -60,11 +60,14 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
import javax.portlet.PortletMode;
import javax.portlet.UnavailableException;
import javax.portlet.WindowState;
+import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -94,209 +97,415 @@
import org.apache.pluto.portalImpl.util.ObjectID;
import org.apache.pluto.services.information.DynamicInformationProvider;
import org.apache.pluto.services.information.PortalContextProvider;
+import org.apache.pluto.services.log.Log;
-
+/**
+ * <p>Responsible for rendering a single Portlet.<p>
+ *
+ * <p>Requires two JSP files to exist, PortletFragmentHeader.jsp
+ * and PortletFragmentFooter.jsp. These pages define the header
+ * and footer of the portlet.</p>
+ *
+ * <p>A PortletFragment.PortletInfo object is added to the request
+ * attributes and makes information about the Portlet available to the
+ * header and footer JSP pages.</p>
+ *
+ * @author Stephan Hesmer
+ * @author Nick Lothian
+ *
+ */
public class PortletFragment extends AbstractFragmentSingle {
-
+
private PortletWindow portletWindow = null;
- public PortletFragment(String id,
- ServletConfig config,
+ public static final String PORTLET_ERROR_MSG = "Error occurred in portlet!";
+
+ public PortletFragment(String id,
+ ServletConfig config,
org.apache.pluto.portalImpl.aggregation.Fragment parent,
org.apache.pluto.portalImpl.om.page.Fragment fragDesc,
org.apache.pluto.portalImpl.aggregation.navigation.Navigation navigation)
- throws Exception
+ throws Exception
{
- super(id, config, parent, fragDesc, navigation);
- String portletEntityId = getInitParameters().getString("portlet");
- PortletEntity portletEntity = PortletEntityRegistry.getPortletEntity(ObjectID.createFromString(portletEntityId));
- portletWindow = new PortletWindowImpl(getId());
- ((PortletWindowCtrl)portletWindow).setPortletEntity(portletEntity);
- PortletWindowList windowList = portletEntity.getPortletWindowList();
- ((PortletWindowListCtrl)windowList).add(portletWindow);
- }
+ super(id, config, parent, fragDesc, navigation);
+ String portletEntityId = getInitParameters().getString("portlet");
+ PortletEntity portletEntity = PortletEntityRegistry.getPortletEntity(ObjectID.createFromString(portletEntityId));
+ portletWindow = new PortletWindowImpl(getId());
+ ((PortletWindowCtrl) portletWindow).setPortletEntity(portletEntity);
+ PortletWindowList windowList = portletEntity.getPortletWindowList();
+ ((PortletWindowListCtrl) windowList).add(portletWindow);
+ }
- public void service(HttpServletRequest request, HttpServletResponse response)
+ public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
- HttpServletRequest wrappedRequest = ServletObjectAccess.getServletRequest(request,portletWindow);
+ HttpServletRequest wrappedRequest = ServletObjectAccess.getServletRequest(request, portletWindow);
+ PrintWriter responseWriter = response.getWriter();
+ StringWriter storedWriter = new StringWriter();
+
+ // load the Portlet
+ // If there is an error loading, then we will save the error message and attempt
+ // to render it inside the Portlet, so the Portal has a chance of still looking
+ // okay
+ String errorMsg = null;
+ try {
+ PortletContainerFactory.getPortletContainer().portletLoad(portletWindow, wrappedRequest, response);
+ } catch (PortletContainerException e) {
+ Log.error("Error in Portlet", e);
+ errorMsg = getErrorMsg();
+ } catch (Throwable t) {
+ // If we catch any throwable, we want to try to continue
+ // so that the rest of the portal renders correctly
+ Log.error("Error in Portlet", t);
+ if (t instanceof VirtualMachineError) {
+ // if the Throwable is a VirtualMachineError then
+ // it is very unlikely (!) that the portal is going
+ // to render correctly.
+ throw (Error) t;
+ } else {
+ errorMsg = getErrorMsg();
+ }
+
+ }
+
+ PortalEnvironment env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
+ PortalURL thisURL = env.getRequestedPortalURL();
+
+ PortalControlParameter thisControl = new PortalControlParameter(thisURL);
+ if (thisControl.isOnePortletWindowMaximized()) {
+ WindowState currentState = thisControl.getState(portletWindow);
+ if (!WindowState.MAXIMIZED.equals(currentState)) {
+ return;
+ }
+ }
+
+ PortletDefinition portletDefinition = portletWindow.getPortletEntity().getPortletDefinition();
+ LanguageSet languageSet = portletDefinition.getLanguageSet();
+ Language lang = languageSet.get(request.getLocale());
+ String title = lang != null ? lang.getTitle() : "no title available";
+
+ // create a PortletInfo object. This is used to communicate with
+ // the header and footer JSP pages for this portlet
+ PortletInfo portletInfo = new PortletInfo();
+
+ if (!portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition().isUnavailable()) {
+ PrintWriter writer2 = new PrintWriter(storedWriter);
+
+ // create a wrapped response which the Portlet will be rendered to
+ HttpServletResponse wrappedResponse = ServletObjectAccess.getStoredServletResponse(response, writer2);
+
+ try {
+ // render the Portlet to the wrapped response, to be output later.
+ PortletContainerFactory.getPortletContainer().renderPortlet(portletWindow, wrappedRequest, wrappedResponse);
+ } catch (UnavailableException e) {
+ Log.error("Portlet is Unavailable", e);
+ writer2.println("the portlet is currently unavailable!");
+
+ ServletDefinitionCtrl servletDefinitionCtrl = (ServletDefinitionCtrl) ControllerObjectAccess.get(portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition());
+ if (e.isPermanent()) {
+ servletDefinitionCtrl.setAvailable(Long.MAX_VALUE);
+ } else {
+ int unavailableSeconds = e.getUnavailableSeconds();
+ if (unavailableSeconds <= 0) {
+ unavailableSeconds = 60; // arbitrary default
+ }
+ servletDefinitionCtrl.setAvailable(System.currentTimeMillis() + unavailableSeconds * 1000);
+ }
+ } catch (Exception e) {
+ Log.error("Error in Portlet", e);
+ writer2.println(getErrorMsg());
+ }
+ String dyn_title = ((DynamicTitleServiceImpl) FactoryAccess.getDynamicTitleContainerService()).getDynamicTitle(portletWindow, request);
+ if (dyn_title != null) {
+ title = dyn_title;
+ }
+
+ }
+ // set the title, so the header JSP page can use it when rendering
+ portletInfo.setTitle(title);
+
+ DynamicInformationProvider provider = FactoryAccess.getDynamicProvider(request);
+ ContentType supported = portletDefinition.getContentTypeSet().get(wrappedRequest.getContentType());
+ PortalContextProvider portalContextProvider = FactoryAccess.getStaticProvider().getPortalContextProvider();
+
+ // get the list of modes this Portlet supports
+ if (supported != null && portalContextProvider != null) {
+ // if portlet supports portlet modes
+ Iterator modes = supported.getPortletModes();
+ while (modes.hasNext()) {
+ PortletMode mode = (PortletMode) modes.next();
+
+ // check whether portal also supports portlet mode
+ boolean portalSupport = false;
+ Iterator portalSupportedModes = portalContextProvider.getSupportedPortletModes().iterator();
+ while (portalSupportedModes.hasNext()) {
+ PortletMode portalSupportedMode = (PortletMode) portalSupportedModes.next();
+ if (mode.equals(portalSupportedMode)) {
+ portalSupport = true;
+ break;
+ }
+ }
+
+ // create links for portlet modes in portlet header
+ if (portalSupport) {
+ env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
+ PortalURL modeURL = env.getRequestedPortalURL();
+
+ PortalControlParameter control = new PortalControlParameter(modeURL);
+ PortletMode currentMode = control.getMode(portletWindow);
+ control.setMode(portletWindow, mode);
+
+ portletInfo.addPortletMode(mode, modeURL.toString(control, new Boolean(request.isSecure())), mode.equals(currentMode));
+ }
+ }
+
+ // get the list of window states this Portlet supports
+ Iterator states = portalContextProvider.getSupportedWindowStates().iterator();
+ while (states.hasNext()) {
+ WindowState state = (WindowState) states.next();
+ env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
+ PortalURL stateURL = env.getRequestedPortalURL();
+ PortalControlParameter control = new PortalControlParameter(stateURL);
+ WindowState currentState = control.getState(portletWindow);
+
+ control.setState(portletWindow, state);
+ portletInfo.addPortletWindowState(state.toString().substring(0, 3), stateURL.toString(control, new Boolean(request.isSecure())), state.equals(currentState));
+ }
+ }
+ // output the header JSP page
+ request.setAttribute("portletInfo", portletInfo);
+ RequestDispatcher rd = getServletConfig().getServletContext().getRequestDispatcher(BASE_ROOT + "PortletFragmentHeader.jsp");
+ rd.include(request, response);
+ try {
+ // output the Portlet
+ // check if there is an error message
+ if (errorMsg == null) {
+ // no error message, so output the Portlet
+ if (portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition().isUnavailable()) {
+ // the portlet is unavailable
+ responseWriter.println("the portlet is currently unavailable!");
+ } else {
+ responseWriter.println(storedWriter.toString());
+ }
+ } else {
+ // output the errror message
+ responseWriter.println(errorMsg);
+ }
+ } finally {
+ // output the footer JSP page
+ RequestDispatcher rdFooter = getServletConfig().getServletContext().getRequestDispatcher(BASE_ROOT + "PortletFragmentFooter.jsp");
+ rdFooter.include(request, response);
+ request.removeAttribute("portletInfo");
+ }
+
+ }
+
+ public void createURL(PortalURL url) {
+ getParent().createURL(url);
+ url.addLocalNavigation(getId());
+ }
+
+ public boolean isPartOfURL(PortalURL url) {
+ return true;
+ }
+
+ public PortletWindow getPortletWindow() {
+ return portletWindow;
+ }
+
+ public class PortletInfo {
+ private String title;
+ private List availablePortletModes = new ArrayList();
+ private List availablePortletWindowStates = new ArrayList();
+
+ /**
+ * @return
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * @param string
+ */
+ public void setTitle(String string) {
+ title = string;
+ }
+
+ /**
+ * @return
+ */
+ public List getAvailablePortletModes() {
+ return availablePortletModes;
+ }
+
+ public void addPortletMode(PortletMode mode, String activationURL, boolean isCurrent) {
+ PortletModeInfo pmi = new PortletModeInfo(mode.toString(), activationURL, isCurrent);
+ availablePortletModes.add(pmi);
+ }
+
+ /**
+ * @return
+ */
+ public List getAvailablePortletWindowStates() {
+ return availablePortletWindowStates;
+ }
+
+ public void addPortletWindowState(String stateLabel, String activationURL, boolean isCurrent) {
+ PortletWindowStateInfo pwsi = new PortletWindowStateInfo(stateLabel, activationURL, isCurrent);
+ availablePortletWindowStates.add(pwsi);
+ }
+
+ }
+
+ public class PortletWindowStateInfo implements Comparable {
+ private String label;
+ private String url;
+ private boolean isCurrent;
+
+ /**
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ public int compareTo(Object compare) {
+ if (!(compare instanceof PortletWindowStateInfo)) {
+ throw new ClassCastException(compare + " is not a " + PortletWindowStateInfo.class.getName());
+ } else {
+ PortletWindowStateInfo other = (PortletWindowStateInfo) compare;
+ return this.getLabel().compareTo(other.getLabel());
+ }
+ }
+ /**
+ * @param stateLabel
+ * @param activationURL
+ * @param isCurrent
+ */
+ public PortletWindowStateInfo(String stateLabel, String activationURL, boolean isCurrent) {
+ this.label = stateLabel;
+ this.url = activationURL;
+ this.isCurrent = isCurrent;
+ }
+ /**
+ * @return
+ */
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * @param string
+ */
+ public void setLabel(String string) {
+ label = string;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isCurrent() {
+ return isCurrent;
+ }
+
+ /**
+ * @return
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * @param b
+ */
+ public void setCurrent(boolean b) {
+ isCurrent = b;
+ }
+
+ /**
+ * @param string
+ */
+ public void setUrl(String string) {
+ url = string;
+ }
+
+ public String toString() {
+ return getLabel();
+ }
+
+ }
+
+ public class PortletModeInfo implements Comparable {
+ private String name;
+ private String url;
+ private boolean isCurrent;
+
+ public PortletModeInfo(String name, String url, boolean isCurrent) {
+ this.name = name;
+ this.url = url;
+ this.isCurrent = isCurrent;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isCurrent() {
+ return isCurrent;
+ }
+
+ /**
+ * @return
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * @param b
+ */
+ public void setCurrent(boolean b) {
+ isCurrent = b;
+ }
+
+ /**
+ * @param string
+ */
+ public void setName(String string) {
+ name = string;
+ }
+
+ /**
+ * @param string
+ */
+ public void setUrl(String string) {
+ url = string;
+ }
+
+ /**
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ public int compareTo(Object compare) {
+ if (!(compare instanceof PortletModeInfo)) {
+ throw new ClassCastException(compare + " is not a " + PortletModeInfo.class.getName());
+ } else {
+ PortletModeInfo other = (PortletModeInfo) compare;
+ return this.getName().compareTo(other.getName());
+ }
+ }
+
+ public String toString() {
+ return getName();
+ }
+ }
- try {
- PortletContainerFactory.
- getPortletContainer().
- portletLoad(portletWindow, wrappedRequest, response);
- } catch (PortletContainerException e) {
- e.printStackTrace(System.err);
- } catch (Throwable t) {
- t.printStackTrace(System.err);
- }
-
- PortalEnvironment env = (PortalEnvironment)request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
- PortalURL thisURL = env.getRequestedPortalURL();
-
- PortalControlParameter thisControl = new PortalControlParameter(thisURL);
- if (thisControl.isOnePortletWindowMaximized()) {
- WindowState currentState = thisControl.getState(portletWindow);
- if (!WindowState.MAXIMIZED.equals(currentState)) {
- return;
- }
- }
-
- PrintWriter writer = response.getWriter();
- writer.println("<a name="+thisURL.getLocalNavigationAsString()+"></a>");
- PortletDefinition portletDefinition = portletWindow.getPortletEntity().getPortletDefinition();
- writer.println("<table border='1' cellpadding='1' cellspacing='1' width='100%' height='100%'>");
- writer.println("<tr><td bgcolor='#DDDDDD'>");
- // output title
- writer.println("<table border='0' cellpadding='0' cellspacing='0' width='100%' height='100%'>");
- writer.println("<tr><td>"); //width='70%'
-
- LanguageSet languageSet = portletDefinition.getLanguageSet();
- Language lang = languageSet.get(request.getLocale());
- String title = lang != null ? lang.getTitle()
- : "no title available";
-
- // get dynamic title
- StringWriter storedWriter = new StringWriter();
-
- if (!portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition().isUnavailable())
- {
- PrintWriter writer2 = new PrintWriter(storedWriter);
-
- HttpServletResponse wrappedResponse =
- ServletObjectAccess.getStoredServletResponse(response, writer2);
-
- try {
- PortletContainerFactory.getPortletContainer().renderPortlet(portletWindow, wrappedRequest, wrappedResponse);
- } catch (PortletContainerException e) {
- e.printStackTrace(System.err);
- writer2.println("error occured in portlet!");
- } catch (UnavailableException e) {
- e.printStackTrace(System.err);
- writer2.println("the portlet is currently unavailable!");
-
- ServletDefinitionCtrl servletDefinitionCtrl = (ServletDefinitionCtrl)ControllerObjectAccess.get(portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition());
- if (e.isPermanent()) {
- servletDefinitionCtrl.setAvailable(Long.MAX_VALUE);
- } else {
- int unavailableSeconds = e.getUnavailableSeconds();
- if (unavailableSeconds <= 0) {
- unavailableSeconds = 60; // arbitrary default
- }
- servletDefinitionCtrl.setAvailable(System.currentTimeMillis() + unavailableSeconds * 1000);
- }
- } catch (Throwable t) {
- t.printStackTrace(System.err);
- writer2.println("error occured in portlet!");
- }
-
- String dyn_title =
- ((DynamicTitleServiceImpl)FactoryAccess.getDynamicTitleContainerService()).getDynamicTitle(portletWindow, request);
- if (dyn_title!=null) title = dyn_title;
- }
-
- writer.println("<I><b>" + title + "</b></I>");
- writer.println("</td><td align='right'><font size='-3'>");
-
- DynamicInformationProvider provider = FactoryAccess.getDynamicProvider(request);
- ContentType supported = portletDefinition.getContentTypeSet().get(wrappedRequest.getContentType());
- PortalContextProvider portalContextProvider = FactoryAccess.getStaticProvider().getPortalContextProvider();
-
- if (supported != null && portalContextProvider != null) {
- // if portlet supports portlet modes
- Iterator modes = supported.getPortletModes();
- while (modes.hasNext()) {
- PortletMode mode = (PortletMode)modes.next();
-
- // check whether portal also supports portlet mode
- boolean portalSupport = false;
- Iterator portalSupportedModes = portalContextProvider.getSupportedPortletModes().iterator();
- while (portalSupportedModes.hasNext()) {
- PortletMode portalSupportedMode = (PortletMode)portalSupportedModes.next();
- if (mode.equals(portalSupportedMode)) {
- portalSupport = true;
- break;
- }
- }
-
- // create links for portlet modes in portlet header
- if (portalSupport) {
- env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
- PortalURL modeURL = env.getRequestedPortalURL();
-
- PortalControlParameter control = new PortalControlParameter(modeURL);
- PortletMode currentMode = control.getMode(portletWindow);
- if (!mode.equals(currentMode)) {
- control.setMode(portletWindow, mode);
- writer.println("<a href='"+modeURL.toString(control,new Boolean(request.isSecure()))+"'>"+mode+"</a> ");
- }
- }
- }
-
- // create links for window states in portlet header
- Iterator states = portalContextProvider.getSupportedWindowStates().iterator();
- while (states.hasNext()) {
- WindowState state = (WindowState)states.next();
- env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
- PortalURL stateURL = env.getRequestedPortalURL();
- PortalControlParameter control = new PortalControlParameter(stateURL);
- WindowState currentState = control.getState(portletWindow);
- if (!state.equals(currentState)) {
- control.setState(portletWindow, state);
- writer.println("<a href='"+stateURL.toString(control,new Boolean(request.isSecure()))+"'>"+state.toString().substring(0,3)+"</a> ");
- }
- }
- }
- writer.println("</font></td></tr>");
- writer.println("</table>");
- // output body
- writer.println("</td></tr>");
- writer.println("<tr><td>");
- if (portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition().isUnavailable()) {
- writer.println("the portlet is currently unavailable!");
- } else {
- writer.println(storedWriter.toString());
-/*
- try {
- PortletContainerFactory.getPortletContainer().renderPortlet(portletWindow, wrappedRequest, response);
- } catch (PortletContainerException e) {
- e.printStackTrace(System.err);
- writer.println("error occured in portlet!");
- } catch (UnavailableException e) {
- e.printStackTrace(System.err);
- writer.println("the portlet is currently unavailable!");
- ServletDefinitionCtrl servletDefinitionCtrl = (ServletDefinitionCtrl)ControllerObjectAccess.get(portletWindow.getPortletEntity().getPortletDefinition().getServletDefinition());
- if (e.isPermanent()) {
- servletDefinitionCtrl.setAvailable(Long.MAX_VALUE);
- } else {
- int unavailableSeconds = e.getUnavailableSeconds();
- if (unavailableSeconds <= 0) {
- unavailableSeconds = 60; // arbitrary default
- }
- servletDefinitionCtrl.setAvailable(System.currentTimeMillis() + unavailableSeconds * 1000);
- }
- } catch (Throwable t) {
- t.printStackTrace(System.err);
- writer.println("error occured in portlet!");
- }
-*/
- }
- writer.println("</td></tr>");
- writer.println("</table>");
+ protected String getErrorMsg() {
+ return PORTLET_ERROR_MSG;
}
- public void createURL(PortalURL url)
- {
- getParent().createURL(url);
- url.addLocalNavigation(getId());
- }
- public boolean isPartOfURL(PortalURL url)
- {
- return true;
- }
- public PortletWindow getPortletWindow() {
- return portletWindow;
- }
}