/*******************************************************************************
* Copyright 2012 Pradeep Nambiar, Pexus LLC
*
* Source File: src/org/perf/utils/RequestResponseUtils.java
*
* 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.perf.log.utils;
import java.util.Enumeration;
import java.util.Map;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.portlet.PortletSession;
import javax.portlet.filter.ActionResponseWrapper;
import javax.portlet.filter.EventResponseWrapper;
import javax.portlet.filter.RenderResponseWrapper;
import javax.portlet.filter.ResourceResponseWrapper;
import javax.servlet.ServletResponse;
import javax.servlet.ServletResponseWrapper;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpSession;
import org.perf.log.logger.Logger;
import org.perf.log.logger.LoggerFactory;
public class RequestResponseUtils
{
static Logger logger = LoggerFactory.getLogger("RequestResponseUtils");
public static void printHttpServletRequestRelatedInfo(
HttpServletRequest httpServletRequest) {
logger
.debug("------- Begin Information stored at HttpServlet level -------");
printHttpServletRequestParameter(httpServletRequest);
printHttpServletRequestAttribute(httpServletRequest);
// printHttpSessionAttribute(httpServletRequest);
logger
.debug("------- End Information stored at HttpServlet level -------");
}
public static void printHttpServletRequestRelatedInfo(
PortletRequest portletRequest) {
logger
.debug("------- Begin Information stored at HttpServlet level -------");
HttpServletRequest httpServletRequest = getHttpServletRequest(portletRequest);
printHttpServletRequestParameter(httpServletRequest);
printHttpServletRequestAttribute(httpServletRequest);
printHttpSessionAttribute(httpServletRequest);
logger
.debug("------- End Information stored at HttpServlet level -------");
}
public static void printPortletRelatedInfo(PortletRequest portletRequest) {
logger
.debug("------- Begin Information stored at portlet level -------");
logger.debug("Portlet Mode " + portletRequest.getPortletMode());
logger.debug("Window State " + portletRequest.getWindowState());
logger.debug("Window ID " + portletRequest.getWindowID());
printPortletRequestParameter(portletRequest);
printPortletRequestAttribute(portletRequest);
printPortletPreferences(portletRequest);
printPortletSessionInfo(portletRequest);
printPortletProperties(portletRequest);
logger.debug("------- End Information stored at portlet level -------");
}
public static void printPortletProperties(PortletRequest portletRequest) {
logger.debug("------- Printing Portlet Parameters -------");
Enumeration paramEnum = portletRequest.getPropertyNames();
while (paramEnum.hasMoreElements()) {
String paramName = (String) paramEnum.nextElement();
String paramValue = portletRequest.getProperty(paramName);
logger.debug(paramName + " -> " + paramValue);
}
}
public static void printPortletRequestParameter(
PortletRequest portletRequest) {
logger.debug(" ------- Printing Portlet Parameters -------");
Enumeration paramEnum = portletRequest.getParameterNames();
while (paramEnum.hasMoreElements()) {
String paramName = (String) paramEnum.nextElement();
String paramValue = portletRequest.getParameter(paramName);
logger.debug(paramName + " -> " + paramValue);
}
}
public static void printPortletRequestAttribute(
PortletRequest portletRequest) {
logger.debug("------- Printing Portlet Attributes -------");
Enumeration attributeEnum = portletRequest.getAttributeNames();
while (attributeEnum.hasMoreElements()) {
String attrName = (String) attributeEnum.nextElement();
Object attrValue = portletRequest.getAttribute(attrName);
logger.debug(attrName + " -> " + attrValue);
}
}
public static void printPortletPreferences(PortletRequest portletRequest) {
logger.debug(" ------- Printing PortletPreferences -------");
PortletPreferences pref = portletRequest.getPreferences();
Enumeration prefEnum = pref.getNames();
while (prefEnum.hasMoreElements()) {
String prefName = (String) prefEnum.nextElement();
String prefValue = pref.getValue(prefName, "");
logger.debug(prefName + " -> " + prefValue);
}
}
public static void printPortletSessionInfo(PortletRequest portletRequest) {
logger.debug("------- Printing PortletSession attributes -------");
PortletSession session = portletRequest.getPortletSession();
Enumeration attribEnum = session.getAttributeNames();
while (attribEnum.hasMoreElements()) {
String attrName = (String) attribEnum.nextElement();
Object attrValue = session.getAttribute(attrName);
}
}
public static HttpServletRequest getHttpServletRequest(
PortletRequest request) {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
while (httpServletRequest instanceof HttpServletRequestWrapper) {
HttpServletRequestWrapper httpServletRequestWrapper = (HttpServletRequestWrapper) httpServletRequest;
httpServletRequest = (HttpServletRequest) httpServletRequestWrapper
.getRequest();
}
return httpServletRequest;
}
public static void printHttpServletRequestParameter(
HttpServletRequest httpServletRequest) {
logger.debug("------- Printing HttpServletRequest parameter -------");
Enumeration paramEnum = httpServletRequest.getParameterNames();
while (paramEnum.hasMoreElements()) {
String paramName = (String) paramEnum.nextElement();
String paramValue = httpServletRequest.getParameter(paramName);
logger.debug(paramName + " -> " + paramValue);
}
}
public static void printHttpServletRequestAttribute(
HttpServletRequest httpServletRequest) {
logger.debug("------- Printing HttpServletRequest attributes -------");
Enumeration attrEnum = httpServletRequest.getAttributeNames();
while (attrEnum.hasMoreElements()) {
String attrName = (String) attrEnum.nextElement();
Object attrValue = httpServletRequest.getAttribute(attrName);
logger.debug(attrName + " -> " + attrValue);
}
}
public static void printHttpSessionAttribute(
HttpServletRequest httpServletRequest) {
logger.debug("------- Printing HttpSession attributes -------");
HttpSession httpSession = httpServletRequest.getSession();
Enumeration attrEnum = httpSession.getAttributeNames();
while (attrEnum.hasMoreElements()) {
String attrName = (String) attrEnum.nextElement();
Object attrValue = httpSession.getAttribute(attrName);
logger.debug(attrName + " -> " + attrValue);
}
}
private static ServletResponse getServletResponse(PortletResponse response) {
if (response instanceof ServletResponse)
return (ServletResponse) response;
else if (response instanceof ServletResponseWrapper)
return ((ServletResponseWrapper) response).getResponse();
else if (response instanceof ActionResponseWrapper)
return (ServletResponse) ((ActionResponseWrapper) response)
.getResponse();
else if (response instanceof RenderResponseWrapper)
return (ServletResponse) ((RenderResponseWrapper) response)
.getResponse();
else if (response instanceof ResourceResponseWrapper)
return (ServletResponse) ((ResourceResponseWrapper) response)
.getResponse();
else if (response instanceof EventResponseWrapper)
return (ServletResponse) ((EventResponseWrapper) response)
.getResponse();
else
return null;
}
public static void printDebugInformation(PortletRequest request,
PortletResponse response, Map<String, String> portletInfoMap) {
Enumeration<String> requestParam = request.getParameterNames();
while (requestParam.hasMoreElements()) {
String paramName = requestParam.nextElement();
String paramValue = request.getParameter(paramName);
logger.debug("Request Param " + paramName + " -> " + paramValue);
}
}
}