📄 portletrequestimpl.java
字号:
/**
* Determines whether a user is mapped to the specified role. As specified
* in PLT-20-3, we must reference the <security-role-ref> mappings
* within the deployment descriptor. If no mapping is available, then, and
* only then, do we check use the actual role name specified against the web
* application deployment descriptor.
*
* @param roleName the name of the role
* @return true if it is determined the user has the given role.
*/
public boolean isUserInRole(String roleName)
{
PortletEntity entity = portletWindow.getPortletEntity();
PortletDefinition def = entity.getPortletDefinition();
SecurityRoleRef ref = null;
Iterator refs = def.getSecurityRoleRefs().iterator();
while (refs.hasNext())
{
SecurityRoleRef r = (SecurityRoleRef) refs.next();
if (r.getRoleName().equals(roleName))
{
ref = r;
break;
}
}
String link;
if (ref != null && ref.getRoleLink() != null)
{
link = ref.getRoleLink();
} else
{
link = roleName;
}
return this.getHttpServletRequest().isUserInRole(link);
}
public Object getAttribute(String name)
{
ArgumentUtility.validateNotNull("attributeName", name);
if (namedRequestDispatcher && (name.startsWith("javax.servlet.forward") || name.startsWith("javax.servlet.include")))
{
// PLT.19.3.1
if (name.equals("javax.servlet.include.request_uri")||name.equals("javax.servlet.include.context_path")||
name.equals("javax.servlet.include.servlet_path")||name.equals("javax.servlet.include.path_info")||
name.equals("javax.servlet.include.query_string"))
{
return null;
}
// PLT.19.4.2, ccxlii
if (name.equals("javax.servlet.forward.request_uri")||name.equals("javax.servlet.forward.context_path")||
name.equals("javax.servlet.forward.servlet_path")||name.equals("javax.servlet.forward.path_info")||
name.equals("javax.servlet.forward.query_string"))
{
return null;
}
}
final OptionalContainerServices optionalContainerServices = container.getOptionalContainerServices();
final RequestAttributeService requestAttributeService = optionalContainerServices.getRequestAttributeService();
return requestAttributeService.getAttribute(this, this.getHttpServletRequest(), this.portletWindow, name);
}
public Enumeration<String> getAttributeNames()
{
final OptionalContainerServices optionalContainerServices = container.getOptionalContainerServices();
final RequestAttributeService requestAttributeService = optionalContainerServices.getRequestAttributeService();
return requestAttributeService.getAttributeNames(this, this.getHttpServletRequest(), this.portletWindow);
}
public String getParameter(String name)
{
ArgumentUtility.validateNotNull("parameterName", name);
String[] values = null;
if (parameters != null)
{
values = parameters.get(name);
}
else
{
List<String> publicRenderParameterNames = portletWindow.getPortletEntity().getPortletDefinition().getSupportedPublicRenderParameters();
if (publicRenderParameterNames != null)
{
if (publicRenderParameterNames.contains(name))
values = urlProvider.getPublicRenderParameters(name);
else
values = (String[]) baseGetParameterMap().get(name);
}
else
{
values = (String[]) baseGetParameterMap().get(name);
}
}
if (values != null && values.length > 0)
{
return values[0];
}
else
{
return null;
}
}
public Enumeration<String> getParameterNames()
{
return Collections.enumeration(baseGetParameterMap().keySet());
}
public String[] getParameterValues(String name)
{
ArgumentUtility.validateNotNull("parameterName", name);
String[] values = null;
if (parameters != null)
{
values = parameters.get(name);
}
else
{
List<String> publicRenderParameterNames = portletWindow.getPortletEntity().getPortletDefinition().getSupportedPublicRenderParameters();
if (publicRenderParameterNames != null)
{
if (publicRenderParameterNames.contains(name))
values = urlProvider.getPublicRenderParameters(name);
else
values = (String[]) baseGetParameterMap().get(name);
}
else
{
values = (String[]) baseGetParameterMap().get(name);
}
}
if (values != null)
{
values = StringUtils.copy(values);
}
return values;
}
public Map<String, String[]> getParameterMap()
{
if (parameters != null)
{
return parameters;
}
else
{
String[] values = null;
Map<String, String[]>map = StringUtils.copyParameters(baseGetParameterMap());
List<String> publicRenderParameterNames = portletWindow.getPortletEntity().getPortletDefinition().getSupportedPublicRenderParameters();
if (publicRenderParameterNames!=null)
{
for (String string : publicRenderParameterNames)
{
values = urlProvider.getPublicRenderParameters(string);
if (values != null)
{
map.put(string, values);
}
}
}
parameters = Collections.unmodifiableMap(map);
return parameters;
}
}
public boolean isSecure()
{
return this.getHttpServletRequest().isSecure();
}
public void setAttribute(String name, Object value)
{
ArgumentUtility.validateNotNull("attributeName", name);
final OptionalContainerServices optionalContainerServices = container.getOptionalContainerServices();
final RequestAttributeService requestAttributeService = optionalContainerServices.getRequestAttributeService();
requestAttributeService.setAttribute(this, this.getHttpServletRequest(), this.portletWindow, name, value);
}
public void removeAttribute(String name)
{
ArgumentUtility.validateNotNull("attributeName", name);
final OptionalContainerServices optionalContainerServices = container.getOptionalContainerServices();
final RequestAttributeService requestAttributeService = optionalContainerServices.getRequestAttributeService();
requestAttributeService.removeAttribute(this, this.getHttpServletRequest(), this.portletWindow, name);
}
public String getRequestedSessionId()
{
return this.getHttpServletRequest().getRequestedSessionId();
}
public boolean isRequestedSessionIdValid()
{
if (LOG.isDebugEnabled())
{
LOG.debug(" ***** IsRequestedSessionIdValid? "+getHttpServletRequest().isRequestedSessionIdValid());
}
return getHttpServletRequest().isRequestedSessionIdValid();
}
public String getResponseContentType()
{
Enumeration<String> enumeration = getResponseContentTypes();
while (enumeration.hasMoreElements())
{
return (String) enumeration.nextElement();
}
return "text/html";
}
public Enumeration<String> getResponseContentTypes()
{
if (contentTypes == null)
{
contentTypes = new Vector<String>();
PortletDefinition dd = portletWindow.getPortletEntity().getPortletDefinition();
Iterator supports = dd.getSupports().iterator();
while (supports.hasNext())
{
Supports sup = (Supports) supports.next();
contentTypes.add(sup.getMimeType());
}
if (contentTypes.size() < 1)
{
contentTypes.add("text/html");
}
}
return contentTypes.elements();
}
public Locale getLocale()
{
return this.getHttpServletRequest().getLocale();
}
@SuppressWarnings("unchecked")
public Enumeration<Locale> getLocales()
{
return this.getHttpServletRequest().getLocales();
}
public String getScheme()
{
return this.getHttpServletRequest().getScheme();
}
public String getServerName()
{
return this.getHttpServletRequest().getServerName();
}
public int getServerPort()
{
return this.getHttpServletRequest().getServerPort();
}
// Protected Methods -------------------------------------------------------
protected void setBodyAccessed()
{
bodyAccessed = true;
}
// InternalPortletRequest Impl ---------------------------------------------
public PortletWindow getPortletWindow()
{
return portletWindow;
}
public PortletContainer getPortletContainer()
{
return container;
}
public HttpServletRequest getHttpServletRequest()
{
return (HttpServletRequest) super.getRequest();
}
public void init(InternalPortletContext portletContext, HttpServletRequest req)
{
this.portletContext = portletContext;
setRequest(req);
setCCPPProfile();
setLifecyclePhase();
}
public PortletPreferences getPreferences()
{
if (portletPreferences == null)
{
portletPreferences = new PortletPreferencesImpl(
getPortletContainer(),
getPortletWindow(),
this,
this.getRequestMethod());
}
return portletPreferences;
}
/**
* TODO: Implement this properly. Not required now
*/
public void release()
{
// FIXME: This needs to be implemented
}
// TODO: Additional Methods of HttpServletRequestWrapper -------------------
public BufferedReader getReader()
throws UnsupportedEncodingException, IOException
{
// the super class will ensure that a IllegalStateException is thrown
// if getInputStream() was called earlier
BufferedReader reader = getHttpServletRequest().getReader();
bodyAccessed = true;
return reader;
}
public ServletInputStream getInputStream() throws IOException
{
ServletInputStream stream = getHttpServletRequest().getInputStream();
bodyAccessed = true;
return stream;
}
public RequestDispatcher getRequestDispatcher(String path)
{
return new ServletRequestDispatcher(getHttpServletRequest().getRequestDispatcher(path));
}
/**
* TODO: why check bodyAccessed?
*/
public void setCharacterEncoding(String encoding)
throws UnsupportedEncodingException
{
if (bodyAccessed)
{
throw new IllegalStateException("Cannot set character encoding "
+ "after HTTP body is accessed.");
}
super.setCharacterEncoding(encoding);
}
// Private Methods ---------------------------------------------------------
private boolean isPortletModeAllowedByPortlet(PortletMode mode)
{
if (isPortletModeMandatory(mode))
{
return true;
}
PortletDefinition dd = portletWindow.getPortletEntity()
.getPortletDefinition();
Iterator mimes = dd.getSupports().iterator();
while (mimes.hasNext())
{
Iterator modes = ((Supports) mimes.next()).getPortletModes().iterator();
while (modes.hasNext())
{
String m = (String) modes.next();
if (m.equalsIgnoreCase(mode.toString()))
{
return true;
}
}
}
return false;
}
private boolean isPortletModeAllowedByPortal(PortletMode mode)
{
Enumeration supportedModes = portalContext.getSupportedPortletModes();
while (supportedModes.hasMoreElements())
{
if (supportedModes.nextElement().toString().equalsIgnoreCase(
(mode.toString())))
{
return true;
}
}
return false;
}
private boolean isPortletModeMandatory(PortletMode mode)
{
return PortletMode.VIEW.equals(mode) || PortletMode.EDIT.equals(mode) || PortletMode.HELP.equals(mode);
}
// InternalRenderRequest Impl ----------------------------------------------
public Cookie[] getCookieProperties()
{
return container.getRequiredContainerServices().getPortalCallbackService().getRequestPropertyProvider().getCookieProperty(getHttpServletRequest(), portletWindow);
}
public String getMethod()
{
return super.getMethod();
}
public boolean isForwarded()
{
return forwarded;
}
public void setForwarded(boolean forwarded)
{
this.forwarded = forwarded;
if (LOG.isDebugEnabled())
{
LOG.debug("Portlet request's forwarded mode: " + forwarded);
}
}
public void setIncluded(boolean included)
{
this.included = included;
// if (!included)
// {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -