jpivotportlet.java
来自「OLAP 的客户端代码」· Java 代码 · 共 448 行 · 第 1/2 页
JAVA
448 行
}
/** TODO EBIF: das sollte wieder verschwinden, wenn HH die $VARIABLEN im Mondrian eingebaut hat */
/*
private boolean passThru(ServletRequest req) {
if (passThru == null)
return false;
HttpServletRequest hsr = (HttpServletRequest) req;
return UrlUtils.matchPattern(hsr, passThru);
}
*/
public void destroy() {
}
/** for testing */
void setForceExtension(String forceExtension) {
this.forceExtension = forceExtension;
}
private void logRequest(PortletRequest request) {
logger.info(">>> Request " + request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + request.getContextPath() );
}
public RequestContext createContext(RenderRequest request, RenderResponse response) {
HttpServletRequest httpRequest = getHttpServletRequest(this, request, response);
HttpServletResponse httpResponse = getHttpServletResponse(this, request, response);
//HttpSession session = httpRequest.getSession(true);
//RequestContextFactory rcf = RequestContextFactoryFinder.findFactory(session);
//return rcf.createContext(httpRequest, httpResponse);
return RequestContextFactoryFinder.createContext(httpRequest, httpResponse, true);
}
protected String getContextProviderClassNameParameter(PortletConfig config) {
return config.getInitParameter(PARAM_SERVLET_CONTEXT_PROVIDER);
}
protected ServletContextProvider getServletContextProvider() {
return servletContextProvider;
}
protected ServletContext getServletContext(GenericPortlet portlet, PortletRequest request, PortletResponse response) {
return getServletContextProvider().getServletContext(portlet);
}
protected HttpServletRequest getHttpServletRequest(GenericPortlet portlet, PortletRequest request, PortletResponse response) {
return getServletContextProvider().getHttpServletRequest(portlet, request);
}
protected HttpServletResponse getHttpServletResponse(GenericPortlet portlet, PortletRequest request, PortletResponse response) {
return getServletContextProvider().getHttpServletResponse(portlet, response);
}
class MyHandler implements RequestSynchronizer.Handler {
protected GenericPortlet portlet;
protected RequestContext context;
protected RenderRequest request;
protected RenderResponse response;
protected HttpServletRequest httpRequest;
protected HttpServletResponse httpResponse;
public MyHandler(GenericPortlet portlet, RequestContext context, RenderRequest request, RenderResponse response) {
this.portlet = portlet;
this.context = context;
this.request = request;
this.response = response;
this.httpRequest = getHttpServletRequest(portlet, request, response);
this.httpResponse = getHttpServletResponse(portlet, request, response);
}
public String getResultURI() {
// did the controller change the view?
String uri = (String) request.getAttribute(NEXTVIEW);
if (uri != null) {
uri = UrlUtils.forceExtension(uri, forceExtension);
//uri = redirectURI(uri);
return uri;
}
// no, redisplay the current request
//return request.getRequestURI();
return request.getContextPath();
}
public void normalRequest() throws Exception {
try {
if (request.getParameter(RESET_RANDOM_SEED) != null)
DomUtils.setRandomSeed(123);
if (redirectToIndex())
return;
HttpSession session = httpRequest.getSession(true);
// fire events
Controller controller = WcfController.instance(session);
controller.request(context);
// someone has called sendError() or sendRedirect() on the response?
if (context.isResponseComplete())
return;
// if the controller redirects to another page, thats fine.
// if not, the current page is redisplayed UNLESS there was an error
// in which case we go to the start page.
String uri = (String) request.getAttribute(NEXTVIEW);
if (session.getAttribute(FORCE_INDEX_JSP) != null) {
session.removeAttribute(FORCE_INDEX_JSP);
if (uri == null)
uri = indexJSP;
}
String query = request.getParameter(QUERY_PARM);
if (query != null) {
include(query, request, response);
}
// Assume we are given a screen and a query
String screen = request.getParameter(SCREEN_PARM);
if (screen != null) {
uri = screen;
}
if (uri != null)
include(uri, request, response);
else
include(mainJSP, request, response);
} catch (Exception e) {
logger.error(null, e);
if (errorJSP != null) {
try {
logger.error("redirecting to error page " + errorJSP, e);
request.setAttribute("javax.servlet.jsp.jspException", e);
include(errorJSP, request, response);
} catch (Exception e2) {
// there was an error displaying the error page. We
// ignore the second error and display the original error
// instead
throw e;
}
} else
throw e;
}
}
public void recursiveRequest() throws Exception {
include(mainJSP, request, response);
}
public void showBusyPage(boolean redirect) throws Exception {
if (redirectToIndex())
return;
if (busyJSP != null) {
if (redirect) {
request.setAttribute("isBusyPage", "true");
include(busyJSP, request, response);
}
} else
throw new IllegalStateException("concurrent requests and no busy.jsp defined in web.xml");
}
public boolean isBusyPage() {
return "true".equals(request.getParameter("isBusyPage"));
}
/**
* @param uri
* @throws IOException
*/
private void include(String uri, RenderRequest request, RenderResponse response) throws PortletException, IOException {
//uri = redirectURI(uri);
uri = UrlUtils.forceExtension(uri, forceExtension);
if (logger.isInfoEnabled())
logger.info("including " + uri);
PortletRequestDispatcher rdisp = getPortletContext()
.getRequestDispatcher(uri);
rdisp.include(request, response);
}
/*
private String redirectURI(String uri) {
if (uri.startsWith("/")) {
StringBuffer sb = new StringBuffer();
sb.append(request.getContextPath());
sb.append(uri);
uri = sb.toString();
}
return uri;
}
*/
/**
* true, if the current request was redirected to the index page
* because there is no valid session.
*/
protected boolean redirectToIndex() throws Exception {
if (indexJSP != null) {
// do not redirect to index.jsp while testing
if (Environment.isTest())
return false;
PortletSession session = request.getPortletSession();
boolean isNew = session.isNew();
if (!isNew && request.getParameter(OPERATION_PARM) != null)
isNew = request.getParameter(OPERATION_PARM).equalsIgnoreCase("index");
if (!isNew)
isNew = !"false".equals(session.getAttribute(ISNEW));
if (isNew) {
session.setAttribute(ISNEW, "false");
include(indexJSP, request, response);
return true;
}
}
return false;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?