下面列出了org.springframework.context.i18n.SimpleLocaleContext#javax.portlet.PortletRequest 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
protected TestResult checkParameters(PortletContext context,
PortletRequest request,
PortletResponse response)
throws IOException, PortletException {
// Dispatch to the companion servlet: call checkParameters().
StringBuffer buffer = new StringBuffer();
buffer.append(SERVLET_PATH).append("?")
.append(KEY_TARGET).append("=").append(TARGET_PARAMS)
.append("&").append(KEY_A).append("=").append(VALUE_A)
.append("&").append(KEY_B).append("=").append(VALUE_B);
if (LOG.isDebugEnabled()) {
LOG.debug("Dispatching to: " + buffer.toString());
}
PortletRequestDispatcher dispatcher = context.getRequestDispatcher(
buffer.toString());
dispatcher.include((RenderRequest) request, (RenderResponse) response);
// Retrieve test result returned by the companion servlet.
TestResult result = (TestResult) request.getAttribute(RESULT_KEY);
request.removeAttribute(RESULT_KEY);
return result;
}
private String determineDefaultPhase(Method handlerMethod) {
if (void.class != handlerMethod.getReturnType()) {
return PortletRequest.RENDER_PHASE;
}
for (Class<?> argType : handlerMethod.getParameterTypes()) {
if (ActionRequest.class.isAssignableFrom(argType) || ActionResponse.class.isAssignableFrom(argType) ||
InputStream.class.isAssignableFrom(argType) || Reader.class.isAssignableFrom(argType)) {
return PortletRequest.ACTION_PHASE;
}
else if (RenderRequest.class.isAssignableFrom(argType) || RenderResponse.class.isAssignableFrom(argType) ||
OutputStream.class.isAssignableFrom(argType) || Writer.class.isAssignableFrom(argType)) {
return PortletRequest.RENDER_PHASE;
}
else if (ResourceRequest.class.isAssignableFrom(argType) || ResourceResponse.class.isAssignableFrom(argType)) {
return PortletRequest.RESOURCE_PHASE;
}
else if (EventRequest.class.isAssignableFrom(argType) || EventResponse.class.isAssignableFrom(argType)) {
return PortletRequest.EVENT_PHASE;
}
}
return "";
}
protected TestResult checkSetPreferencesReturnsFirst(PortletRequest request) {
TestResult result = new TestResult();
result.setDescription("Ensure the first value set to a given "
+ "preference is returned first by PortletPreferences.getValue().");
result.setSpecPLT("14.1");
PortletPreferences preferences = request.getPreferences();
try {
preferences.setValues("TEST", new String[] { "FIRST", "SECOND" });
} catch (ReadOnlyException ex) {
TestUtils.failOnException("Unable to set preference values.", ex, result);
return result;
}
String value = preferences.getValue("TEST", DEF_VALUE);
if (value != null && value.equals("FIRST")) {
result.setReturnCode(TestResult.PASSED);
} else {
TestUtils.failOnAssertion("preference value", value, "FIRST", result);
}
return result;
}
public String getFirstName(PortletRequest request) {
fixPortalType(request);
String firstName = null;
Map userInfo = (Map) request.getAttribute(PortletRequest.USER_INFO);
switch (portalType) {
case GRIDSPHERE:
String fullName = getGridsphereFullName(request);
firstName = fullName.trim().substring(0, fullName.indexOf(" "));
break;
case PLUTO:
case UPORTAL:
if (userInfo != null) {
firstName = (String) userInfo.get("user.name.given");
}
break;
}
log.debug("First Name={}", firstName);
return firstName;
}
@Test
public void testDecoratedNativeRequest() {
MockRenderRequest portletRequest = new MockRenderRequest();
MockRenderResponse portletResponse = new MockRenderResponse();
PortletRequest decoratedRequest = new PortletRequestWrapper(portletRequest);
PortletResponse decoratedResponse = new PortletResponseWrapper(portletResponse);
PortletWebRequest request = new PortletWebRequest(decoratedRequest, decoratedResponse);
assertSame(decoratedRequest, request.getNativeRequest());
assertSame(decoratedRequest, request.getNativeRequest(PortletRequest.class));
assertSame(portletRequest, request.getNativeRequest(RenderRequest.class));
assertSame(portletRequest, request.getNativeRequest(MockRenderRequest.class));
assertNull(request.getNativeRequest(MultipartRequest.class));
assertSame(decoratedResponse, request.getNativeResponse());
assertSame(decoratedResponse, request.getNativeResponse(PortletResponse.class));
assertSame(portletResponse, request.getNativeResponse(RenderResponse.class));
assertSame(portletResponse, request.getNativeResponse(MockRenderResponse.class));
assertNull(request.getNativeResponse(MultipartRequest.class));
}
@SuppressWarnings("unchecked")
public static String getEmail(PortletRequest request) {
String email = null;
Map<String,String> userInfo = (Map<String,String>) request.getAttribute(PortletRequest.USER_INFO);
switch (lookupPortalType(request)) {
case GRIDSPHERE:
if (userInfo != null) {
email = userInfo.get("user.email");
}
break;
case PLUTO:
case UPORTAL:
if (userInfo != null) {
email = userInfo.get("user.home-info.online.email");
}
}
debugPrint(request,"EMail="+email);
return email;
}
/**
* Actually resolve the given exception that got thrown during on handler execution,
* returning a ModelAndView that represents a specific error page if appropriate.
* @param request current portlet request
* @param response current portlet response
* @param handler the executed handler, or null if none chosen at the time of
* the exception (for example, if multipart resolution failed)
* @param ex the exception that got thrown during handler execution
* @return a corresponding ModelAndView to forward to, or null for default processing
*/
@Override
protected ModelAndView doResolveException(
PortletRequest request, MimeResponse response, Object handler, Exception ex) {
// Log exception, both at debug log level and at warn level, if desired.
if (logger.isDebugEnabled()) {
logger.debug("Resolving exception from handler [" + handler + "]: " + ex);
}
logException(ex, request);
// Expose ModelAndView for chosen error view.
String viewName = determineViewName(ex, request);
if (viewName != null) {
return getModelAndView(viewName, ex, request);
}
else {
return null;
}
}
/**
* Return a map containing all parameters with the given prefix.
* Maps single values to String and multiple values to String array.
* <p>For example, with a prefix of "spring_", "spring_param1" and
* "spring_param2" result in a Map with "param1" and "param2" as keys.
* <p>Similar to portlet
* {@link javax.portlet.PortletRequest#getParameterMap()},
* but more flexible.
* @param request portlet request in which to look for parameters
* @param prefix the beginning of parameter names
* (if this is {@code null} or the empty string, all parameters will match)
* @return map containing request parameters <b>without the prefix</b>,
* containing either a String or a String array as values
* @see javax.portlet.PortletRequest#getParameterNames
* @see javax.portlet.PortletRequest#getParameterValues
* @see javax.portlet.PortletRequest#getParameterMap
*/
public static Map<String, Object> getParametersStartingWith(PortletRequest request, String prefix) {
Assert.notNull(request, "Request must not be null");
Enumeration<String> paramNames = request.getParameterNames();
Map<String, Object> params = new TreeMap<String, Object>();
if (prefix == null) {
prefix = "";
}
while (paramNames != null && paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
if ("".equals(prefix) || paramName.startsWith(prefix)) {
String unprefixed = paramName.substring(prefix.length());
String[] values = request.getParameterValues(paramName);
if (values == null || values.length == 0) {
// Do nothing, no values found at all.
}
else if (values.length > 1) {
params.put(unprefixed, values);
}
else {
params.put(unprefixed, values[0]);
}
}
}
return params;
}
public static void debugPrint(PortletRequest request, String line)
{
if ( line == null ) return;
line = line.replaceAll("<","<").replaceAll(">",">");
PortletSession pSession = request.getPortletSession(true);
String debugOut = null;
try {
debugOut = (String) pSession.getAttribute("debug.print");
} catch (Throwable t) {
debugOut = null;
}
if ( debugOut == null ) {
debugOut = line;
} else {
debugOut = debugOut + "\n" + line;
}
pSession.setAttribute("debug.print",debugOut);
}
@SuppressWarnings("unchecked")
public static String getEmail(PortletRequest request) {
String email = null;
Map<String,String> userInfo = (Map<String,String>) request.getAttribute(PortletRequest.USER_INFO);
switch (lookupPortalType(request)) {
case GRIDSPHERE:
if (userInfo != null) {
email = userInfo.get("user.email");
}
break;
case PLUTO:
case UPORTAL:
if (userInfo != null) {
email = userInfo.get("user.home-info.online.email");
}
}
debugPrint(request,"EMail="+email);
return email;
}
@Override
public void setContentType(String contentType) {
// The content type is set by Pluto for the render & header phases
if (!isClosed()) {
if (getLifecycle().equals(PortletRequest.RESOURCE_PHASE)) {
getServletResponse().setContentType(contentType);
} else {
String type = getServletResponse().getContentType();
if (type == null) {
// default MIME type for Pluto
type = "text/html";
} else {
// ignore charset parameter
type = type.replaceAll("([^;]*).*", "$1");
}
if (!type.equals(contentType) && !contentType.matches("\\s*(?:\\*|\\*/\\s*\\*)\\s*")) {
throw new IllegalArgumentException("Invalid content type: " + contentType);
}
}
}
}
@Override
protected void doView(RenderRequest req, RenderResponse resp) throws PortletException, IOException {
if (isDebug) {
StringBuilder txt = new StringBuilder(128);
txt.append("Rendering. ");
txt.append("RENDER_PART: ");
txt.append((String)req.getAttribute(PortletRequest.RENDER_PART));
logger.debug(txt.toString());
}
resp.setContentType("text/html");
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/view-hdp.jsp");
rd.include(req, resp);
}
protected TestResult checkIsUserInUnmappedRole(PortletRequest request) {
TestResult result = isUserLoggedIn(request);
result.setDescription("Test if user is in unmapped role");
if (result.getReturnCode() == TestResult.WARNING) {
return result;
}
ExpectedResults expectedResults = ExpectedResults.getInstance();
String role = expectedResults.getUnmappedSecurityRole();
if (request.isUserInRole(role)) {
result.setReturnCode(TestResult.PASSED);
} else {
result.setReturnCode(TestResult.WARNING);
result.setResultMessage("User is not in the expected role: " + role
+ ". This may be due to misconfiuration.");
}
return result;
}
@Test
public void testSetSessionAttributeWithExistingSessionAndSpecificScope() throws Exception {
PortletSession session = mock(PortletSession.class);
PortletRequest request = mock(PortletRequest.class);
given(request.getPortletSession()).willReturn(session); // must not create Session ...
PortletUtils.setSessionAttribute(request, "foo", "foo", PortletSession.APPLICATION_SCOPE);
verify(session).setAttribute("foo", "foo", PortletSession.APPLICATION_SCOPE);
}
/**
* Get a boolean parameter, with a fallback value. Never throws an exception.
* Can pass a distinguished value as default to enable checks of whether it was supplied.
* <p>Accepts "true", "on", "yes" (any case) and "1" as values for true;
* treats every other non-empty value as false (i.e. parses leniently).
* @param request current portlet request
* @param name the name of the parameter
* @param defaultVal the default value to use as fallback
*/
public static boolean getBooleanParameter(PortletRequest request, String name, boolean defaultVal) {
if (request.getParameter(name) == null) {
return defaultVal;
}
try {
return getRequiredBooleanParameter(request, name);
}
catch (PortletRequestBindingException ex) {
return defaultVal;
}
}
@Override
public void render(
RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
ThemeDisplay themeDisplay =
(ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
String portletId = portletDisplay.getId();
JSONObject urlObject = JSONFactoryUtil.createJSONObject();
JSONObject apiObject = JSONFactoryUtil.createJSONObject();
// url
PortletURL registerResultURL = PortletURLFactoryUtil.create(
renderRequest, portletId, themeDisplay.getPlid(),
PortletRequest.RENDER_PHASE);
registerResultURL.setPortletMode(PortletMode.VIEW);
registerResultURL.setWindowState(LiferayWindowState.EXCLUSIVE);
registerResultURL.setParameter(
"mvcPath", "/templates/applicant/register_result.ftl");
urlObject.put("register_result", registerResultURL.toString());
// api
apiObject.put("server", themeDisplay.getPortalURL() + "/o/rest/v2");
apiObject.put(
"portletNamespace",
themeDisplay.getPortletDisplay().getNamespace());
// set varible
renderRequest.setAttribute("ajax", urlObject);
renderRequest.setAttribute("api", apiObject);
super.render(renderRequest, renderResponse);
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}
@Test
public void testRemoveSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception {
PortletRequest request = mock(PortletRequest.class);
PortletRequestAttributes attrs = new PortletRequestAttributes(request);
attrs.removeAttribute(KEY, RequestAttributes.SCOPE_SESSION);
verify(request).getPortletSession(false);
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}
/**
* Helper to check if a preference is locked (ie readonly). This may be set by a channel config to restrict access.
*
* @param request
* @return
*/
private boolean isPrefLocked(PortletRequest request, String prefName) {
PortletPreferences prefs = request.getPreferences();
try {
return prefs.isReadOnly(prefName);
} catch (IllegalArgumentException e){
log.debug("Preference does not exist: " + prefName);
return false;
}
}
/**
* Get an array of boolean parameters, return an empty array if not found.
* <p>Accepts "true", "on", "yes" (any case) and "1" as values for true;
* treats every other non-empty value as false (i.e. parses leniently).
* @param request current portlet request
* @param name the name of the parameter with multiple possible values
*/
public static boolean[] getBooleanParameters(PortletRequest request, String name) {
try {
return getRequiredBooleanParameters(request, name);
}
catch (PortletRequestBindingException ex) {
return new boolean[0];
}
}
protected TestResult checkGetNames(PortletConfig config,
PortletRequest request) {
TestResult result = new TestResult();
result.setDescription("Retrieve the property names and ensure that "
+ "the required keys are present.");
List<String> requiredKeys = new ArrayList<String>();
requiredKeys.add(TITLE_KEY);
requiredKeys.add(SHORT_TITLE_KEY);
requiredKeys.add(KEYWORDS_KEY);
ResourceBundle bundle = config.getResourceBundle(request.getLocale());
if (bundle == null) {
result.setReturnCode(TestResult.WARNING);
result.setResultMessage("A function upon which this test depends "
+ "failed to execute as expected. "
+ "Check the other test results in this test suite.");
return result;
}
for (Enumeration<String> en = bundle.getKeys();
en.hasMoreElements(); ) {
String key = (String) en.nextElement();
requiredKeys.remove(key);
}
if (requiredKeys.isEmpty()) {
result.setReturnCode(TestResult.PASSED);
} else {
result.setReturnCode(TestResult.FAILED);
StringBuffer buffer = new StringBuffer();
for (Iterator<String> it = requiredKeys.iterator(); it.hasNext(); ) {
buffer.append(it.next()).append(", ");
}
result.setResultMessage("Required keys [" + buffer.toString()
+ "] are missing in the resource bundle.");
}
return result;
}
/**
* Test to ensure that the basic modes are supported.
* @todo Enhance to check for custom modes.
* @param req
* @return
*/
protected TestResult checkSupportedModes(PortletRequest request) {
TestResult result = new TestResult();
result.setDescription("Ensure the expected portlet modes are returned.");
List<PortletMode> requiredPortletModes = new ArrayList<PortletMode>();
requiredPortletModes.add(PortletMode.VIEW);
requiredPortletModes.add(PortletMode.EDIT);
requiredPortletModes.add(PortletMode.HELP);
for (Enumeration<PortletMode> en =
request.getPortalContext().getSupportedPortletModes();
en.hasMoreElements(); ) {
PortletMode portletMode = en.nextElement();
requiredPortletModes.remove(portletMode);
}
if (requiredPortletModes.isEmpty()) {
result.setReturnCode(TestResult.PASSED);
} else {
result.setReturnCode(TestResult.FAILED);
StringBuffer buffer = new StringBuffer();
for (Iterator<PortletMode> it = requiredPortletModes.iterator();
it.hasNext(); ) {
buffer.append(it.next()).append(", ");
}
result.setResultMessage("Required portlet modes ["
+ buffer.toString() + "] are not supported.");
}
return result;
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}
public void admin(PortletRequestContext context, PortletRequest request, PortletResponse response)
throws IOException, PortletException, PortletContainerException {
if (LOG.isDebugEnabled()) {
LOG.debug("Performing Admin Invocation.");
}
invoke(context, request, response, PortletInvokerService.METHOD_ADMIN);
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}
protected void processTCKReq(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
PortletRequest portletReq = (PortletRequest) request.getAttribute("javax.portlet.request");
request.getAttribute("javax.portlet.response");
request.getAttribute("javax.portlet.config");
Thread.currentThread().getId();
portletReq.getAttribute(THREADID_ATTR);
// Create result objects for the tests
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}
@Override
protected Summary doGetSummary(Document document, Locale locale, String snippet, PortletRequest portletRequest,
PortletResponse portletResponse) throws Exception {
Summary summary = createSummary(document);
summary.setMaxContentLength(QueryUtil.ALL_POS);
return summary;
}