You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by jf...@apache.org on 2005/04/02 19:24:04 UTC
cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/portal/portlets/viewprocessor BufferedVelocityViewProcessor.java BufferedJSPViewProcessor.java ViewProcessorFactory.java
jford 2005/04/02 09:24:04
Modified: src/java/org/apache/jetspeed/portal/portlets/viewprocessor
ViewProcessorFactory.java
Added: src/java/org/apache/jetspeed/portal/portlets/viewprocessor
BufferedVelocityViewProcessor.java
BufferedJSPViewProcessor.java
Log:
Added new buffered view processors
PR: JS1-541
Revision Changes Path
1.4 +10 -0 jakarta-jetspeed/src/java/org/apache/jetspeed/portal/portlets/viewprocessor/ViewProcessorFactory.java
Index: ViewProcessorFactory.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/portlets/viewprocessor/ViewProcessorFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ViewProcessorFactory.java 23 Feb 2004 03:27:18 -0000 1.3
+++ ViewProcessorFactory.java 2 Apr 2005 17:24:04 -0000 1.4
@@ -61,11 +61,21 @@
logger.info("ViewProcessorFactory - creating Velocity processor");
viewProcessor = new VelocityViewProcessor();
}
+ else if (viewType.equals("BufferedVelocity"))
+ {
+ logger.info("ViewProcessorFactory - creating Velocity processor");
+ viewProcessor = new BufferedVelocityViewProcessor();
+ }
else if (viewType.equals("JSP"))
{
logger.info("ViewProcessorFactory - creating JSP processor");
viewProcessor = new JSPViewProcessor();
}
+ else if (viewType.equals("BufferedJSP"))
+ {
+ logger.info("ViewProcessorFactory - creating JSP processor");
+ viewProcessor = new BufferedJSPViewProcessor();
+ }
else if (viewType.equals("XSL"))
{
logger.info("ViewProcessorFactory - creating XSL processor");
1.1 jakarta-jetspeed/src/java/org/apache/jetspeed/portal/portlets/viewprocessor/BufferedVelocityViewProcessor.java
Index: BufferedVelocityViewProcessor.java
===================================================================
/*
* Copyright 2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.portal.portlets.viewprocessor;
import org.apache.jetspeed.portal.Portlet;
import org.apache.jetspeed.portal.PortletException;
import org.apache.jetspeed.portal.portlets.*;
import org.apache.jetspeed.portal.portlets.GenericMVCContext;
import org.apache.jetspeed.services.TemplateLocator;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.jetspeed.util.JetspeedClearElement;
import org.apache.turbine.services.velocity.TurbineVelocity;
import org.apache.turbine.util.RunData;
/**
* Version of the VelocityViewProcess that buffers its content
*
* @author <a href="mailto:tkuebler@cisco.com">Tod Kuebler</a>
* @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
*/
public class BufferedVelocityViewProcessor implements ViewProcessor
{
/**
* Static initialization of the logger for this class
*/
private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(BufferedVelocityViewProcessor.class.getName());
/** Creates a new instance of VelocityViewProcessor */
public BufferedVelocityViewProcessor()
{
}
public void init(Portlet portlet)
throws PortletException
{
}
/** Process the template passed in the context
* (context.get("template")). Invoked by the GenericMVCPortlet
* after action handling to process the template type
* in question.
*
*/
public Object processView(GenericMVCContext context)
{
// generate the content
JetspeedClearElement element = null;
String template = (String) context.get("template");
logger.info("VelocityViewProcessor - processing " + template);
try
{
if (-1 == template.indexOf(".vm"))
{
template = template + ".vm";
}
logger.info("VelocityViewProcessor - locating template - " +
((RunData) context.get("data")).toString() + template);
String templatePath = TemplateLocator.locatePortletTemplate(
(RunData) context.get("data"),
template);
// need to add cache support
Portlet portlet = (Portlet) context.get("portlet");
RunData rundata = (RunData) context.get("data");
long cachePeriod = -1;
AbstractPortlet abstractPortlet = null;
// STW: Safety net ;)
if(portlet instanceof AbstractPortlet)
{
abstractPortlet =(AbstractPortlet) portlet;
if(abstractPortlet.getExpirationMillis() != null)
{
cachePeriod = abstractPortlet.getExpirationMillis().longValue();
}
}
if (cachePeriod > 0 && abstractPortlet != null)
{
String s = TurbineVelocity.handleRequest(context, templatePath);
abstractPortlet.setExpirationMillis(
cachePeriod + System.currentTimeMillis());
element = new JetspeedClearElement(s);
}
else
{
String s = TurbineVelocity.handleRequest(
context, templatePath);
element = new JetspeedClearElement(s);
}
}
catch (Exception e)
{
element = new JetspeedClearElement(e.toString());
logger.error("VelocityViewProcessor - had problems handling request - " + e);
e.printStackTrace();
}
TurbineVelocity.requestFinished(context);
if (element == null)
{
element = new JetspeedClearElement("");
}
return element;
}
}
1.1 jakarta-jetspeed/src/java/org/apache/jetspeed/portal/portlets/viewprocessor/BufferedJSPViewProcessor.java
Index: BufferedJSPViewProcessor.java
===================================================================
/*
* Copyright 2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.portal.portlets.viewprocessor;
// Ecs
import org.apache.ecs.StringElement;
// Jetspeed portal
import org.apache.jetspeed.portal.Portlet;
import org.apache.jetspeed.portal.portlets.GenericMVCContext;
import org.apache.jetspeed.services.TemplateLocator;
import org.apache.jetspeed.services.Registry;
import org.apache.jetspeed.services.jsp.HttpBufferedResponse;
import org.apache.jetspeed.services.jsp.JetspeedJspService;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.jetspeed.om.registry.PortletEntry;
import org.apache.jetspeed.util.JetspeedClearElement;
import org.apache.jetspeed.util.ServiceUtil;
// Turbine stuff
import org.apache.turbine.services.jsp.JspService;
// Turbine util
import org.apache.turbine.util.RunData;
//java stuff
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.RequestDispatcher;
/**
* Version of the JSPViewProcess that buffers its content
*
* @author <a href="mailto:tkuebler@cisco.com">Tod Kuebler</a>
* @author <a href="mailto:weaver@apache.org">Scott Weaver</a>
* @author <a href="mailto:morciuch@apache.org">Mark Orciuch</a>
* @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
* @version $Id: BufferedJSPViewProcessor.java,v 1.1 2005/04/02 17:24:04 jford Exp $
*/
public class BufferedJSPViewProcessor
implements ViewProcessor
{
/**
* Static initialization of the logger for this class
*/
private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(BufferedJSPViewProcessor.class.getName());
/** Creates a new instance of JSPViewProcessor */
public BufferedJSPViewProcessor()
{
}
public Object processView(GenericMVCContext context)
{
String result = "";
Portlet portlet = (Portlet) context.get("portlet");
RunData data = (RunData) context.get("data");
HttpServletRequest request = data.getRequest();
String template = (String) context.get("template");
logger.info("JSPViewProcessor - processing template " + template);
try
{
// Allow access to portlet from .jsp template
request.setAttribute("portlet", portlet);
// put context in attribute so you can get to it from .jsp template
request.setAttribute("context", context);
// Add js_peid out of convenience
request.setAttribute("js_peid", portlet.getID());
// Add rundata out of convenience (JspService.RUNDATA differs from GenericMVCPortlet.RUNDATA)
request.setAttribute(JspService.RUNDATA, data);
// Retrieve the URL. For backward compatibility, use the URL first
// and then fallback to "template" parameter
PortletEntry pe = (PortletEntry) Registry.getEntry(Registry.PORTLET, portlet.getName());
// Files referenced from default templates folder will be processed
// using JspService. Otherwise, they will be loaded using EcsServletElement
// from where ever they came from.
if (pe.getURL() == null || pe.getURL().trim().length() == 0)
{
if (template != null && -1 == template.indexOf(".jsp"))
{
template = template + ".jsp";
}
logger.info("JSPViewProcessor - locating template - " + data.toString()
+ " - " + template);
//we use the template locator to translate the template
String locatedTemplate = TemplateLocator.locatePortletTemplate(data, template);
logger.info("JSPViewProcessor - located template: " + locatedTemplate);
/*if (locatedTemplate == null)
{
locatedTemplate = TemplateLocator.locateScreenTemplate(data, template);
if (locatedTemplate != null)
{
locatedTemplate = "/screens" + locatedTemplate;
}
logger.debug("JSPViewProcessor - located screen template: " + locatedTemplate);
} */
JetspeedJspService service = (JetspeedJspService) ServiceUtil.getServiceByName(JspService.SERVICE_NAME);
// this is only necessary if we don't run in a JSP page environment
// but better be safe than sorry...
service.addDefaultObjects(data);
// handle request
result = service.handleBufferedRequest(data, locatedTemplate, false);
}
else
{
// Build parameter list to be passed with the jsp
Iterator names = portlet.getPortletConfig().getInitParameterNames();
while (names.hasNext())
{
String name = (String) names.next();
String value = (String) portlet.getPortletConfig().getInitParameter(name);
data.getParameters().setString(name, value);
}
template = pe.getURL();
if (logger.isDebugEnabled())
{
logger.debug("JSPViewProcessor - serving jsp directly using: " + template);
}
// get the RequestDispatcher for the JSP
StringWriter writer = new StringWriter();
HttpBufferedResponse response = new HttpBufferedResponse(data.getResponse(), new PrintWriter(writer));
RequestDispatcher dispatcher = data.getServletContext().getRequestDispatcher(template);
data.getOut().flush();
dispatcher.include(data.getRequest(), response);
result = writer.toString();
}
}
catch (Exception e)
{
String message = "JSPViewProcessor: Could not include the following JSP Page: [" + template + "] :\n\t"
+ e.getMessage();
logger.error(message, e);
return new StringElement(message);
}
return new JetspeedClearElement(result);
}
/** Process the template passed in the context
* (context.get("template")). Invoked by the GenericMVCPortlet
* after action handling to process the template type
* in question.
*
*/
public void init(Portlet portlet)
{
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org