001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.aggregator;
018:
019: import java.util.List;
020:
021: import javax.servlet.http.HttpServletRequest;
022: import javax.servlet.http.HttpServletResponse;
023:
024: import org.apache.jetspeed.container.window.FailedToRetrievePortletWindow;
025: import org.apache.jetspeed.om.page.ContentFragment;
026: import org.apache.jetspeed.request.RequestContext;
027: import org.apache.pluto.om.window.PortletWindow;
028:
029: /**
030: * <h4>PortletRendererService<br />
031: * Jetspeed-2 Rendering service.</h4>
032: * <p>This service process all portlet rendering requests and interfaces with the portlet
033: * container to generate the resulting markup</p>
034: *
035: * @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
036: * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
037: * @author <a>Woonsan Ko</a>
038: * @version $Id: PortletRenderer.java 591867 2007-11-05 02:20:06Z woonsan $
039: */
040: public interface PortletRenderer {
041: /**
042: Render the specified Page fragment.
043: Result is returned in the PortletResponse.
044: * @throws FailedToRenderFragmentException
045: * @throws FailedToRetrievePortletWindow
046: * @throws UnknownPortletDefinitionException
047: * @throws PortletAccessDeniedException
048: */
049: public void renderNow(ContentFragment fragment,
050: RequestContext request);
051:
052: /**
053: Render the specified Page fragment.
054: Result is returned in the PortletResponse.
055: * @throws FailedToRenderFragmentException
056: * @throws FailedToRetrievePortletWindow
057: * @throws UnknownPortletDefinitionException
058: * @throws PortletAccessDeniedException
059: */
060: public void renderNow(ContentFragment fragment,
061: HttpServletRequest request, HttpServletResponse response);
062:
063: /**
064: *
065: * Render the specified Page fragment.
066: * The method returns before rendering is complete, rendered content can be
067: * accessed through the ContentDispatcher
068: * @return the asynchronous portlet rendering job to synchronize
069: * @deprecated
070: */
071: public RenderingJob render(ContentFragment fragment,
072: RequestContext request);
073:
074: /**
075: *
076: * Create a rendering job for the specified Page fragment.
077: * The method returns a rendering job which should be passed to 'processRenderingJob(RenderingJob job)' method.
078: * @return portlet rendering job to pass to render(RenderingJob job) method
079: * @throws FailedToRetrievePortletWindow
080: * @throws UnknownPortletDefinitionException
081: * @throws PortletAccessDeniedException
082: */
083: public RenderingJob createRenderingJob(ContentFragment fragment,
084: RequestContext request);
085:
086: /**
087: *
088: * Render the specified rendering job.
089: * The method returns before rendering is complete when the job is processed in parallel mode.
090: * When the job is not parallel mode, it returns after rendering is complete.
091: * @throws FailedToRenderFragmentException
092: */
093: public void processRenderingJob(RenderingJob job);
094:
095: /**
096: * Wait for all rendering jobs in the collection to finish successfully or otherwise.
097: * @param renderingJobs the Collection of rendering job objects to wait for.
098: */
099: public void waitForRenderingJobs(List renderingJobs);
100:
101: /**
102: * Retrieve the ContentDispatcher for the specified request
103: */
104: public ContentDispatcher getDispatcher(RequestContext request,
105: boolean isParallel);
106:
107: /**
108: * Notify that content completed by worker jobs
109: * So that renderer can update its state
110: *
111: * @param content
112: */
113: public void notifyContentComplete(PortletContent content);
114:
115: /**
116: * Set title of portlet window.
117: *
118: * @param portletWindow
119: * @param fragment
120: * @param request
121: * @param response
122: * @param dispatcher
123: * @param isCacheTitle
124: */
125: public void addTitleToHeader(PortletWindow portletWindow,
126: ContentFragment fragment, HttpServletRequest request,
127: HttpServletResponse response,
128: ContentDispatcherCtrl dispatcher, boolean isCacheTitle);
129:
130: PortletTrackingManager getPortletTrackingManager();
131:
132: }
|