blob: 7b98ca1b962f5d2f2e37b0cbb37b771d9af56d1f [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.pluto.tags;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import javax.portlet.ActionParameters;
import javax.portlet.ActionRequest;
import javax.portlet.ClientDataRequest;
import javax.portlet.HeaderRequest;
import javax.portlet.HeaderResponse;
import javax.portlet.MimeResponse;
import javax.portlet.MutableRenderParameters;
import javax.portlet.PortletConfig;
import javax.portlet.PortletContext;
import javax.portlet.PortletMode;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.portlet.RenderParameters;
import javax.portlet.ResourceParameters;
import javax.portlet.ResourceRequest;
import javax.portlet.StateAwareResponse;
import javax.portlet.WindowState;
import javax.servlet.http.Cookie;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.VariableInfo;
/**
* A tag handler for the <CODE>defineObjects</CODE> tag as defined in the JSR 362.
* Uses the superclass to set the JSR 286 stuff, so this class just sets the delta
* between v2 & v3.
*
* @author Scott Nicklous
*
* @version 3.0
*/
public class DefineObjectsTag362 extends DefineObjectsTag286 {
private static final long serialVersionUID = -6107224582740650955L;
public static class TEI extends DefineObjectsTag286.TEI {
protected static List<VariableInfo> info362 =
new ArrayList<VariableInfo>(Arrays.asList(info286));
static {
info362.add(new VariableInfo("headerRequest",
HeaderRequest.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("headerResponse",
HeaderResponse.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("clientDataRequest",
ClientDataRequest.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("mimeResponse",
MimeResponse.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("stateAwareResponse",
StateAwareResponse.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("renderParams",
RenderParameters.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("mutableRenderParams",
MutableRenderParameters.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("actionParams",
ActionParameters.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("resourceParams",
ResourceParameters.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("portletContext",
PortletContext.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("portletMode",
PortletMode.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("windowState",
WindowState.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("cookies",
Cookie[].class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("locale",
Locale.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("locales",
Locale[].class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("namespace",
String.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("contextPath",
String.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("windowId",
String.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
info362.add(new VariableInfo("portletName",
String.class.getCanonicalName(),
true,
VariableInfo.AT_BEGIN));
}
@Override
public VariableInfo[] getVariableInfo(TagData tagData) {
return info362.toArray(new VariableInfo[0]);
}
}
@Override
protected void setPortletRequestResponseAttribute(PortletRequest request, PortletResponse response) {
PortletContext poco = request.getPortletContext();
setAttribute(poco, "portletContext");
PortletConfig config = (PortletConfig) pageContext.getRequest().getAttribute(Constants.PORTLET_CONFIG);
setAttribute(config.getPortletName(), "portletName");
setAttribute(request.getRenderParameters(), "renderParams");
setAttribute(request.getPortletMode(), "portletMode");
setAttribute(request.getWindowState(), "windowState");
setAttribute(request.getCookies(), "cookies");
setAttribute(Collections.list(request.getLocales()).toArray(new Locale[0]), "locales");
setAttribute(request.getLocale(), "locale");
setAttribute(request.getWindowID(), "windowId");
setAttribute(request.getContextPath(), "contextPath");
setAttribute(response.getNamespace(), "namespace");
if (request instanceof ClientDataRequest) {
setAttribute(request, "clientDataRequest");
if (request instanceof ActionRequest) {
setAttribute(((ActionRequest) request).getActionParameters(), "actionParameters");
} else {
setAttribute(((ResourceRequest) request).getResourceParameters(), "resourceParameters");
}
}
if (response instanceof StateAwareResponse) {
setAttribute(response, "stateAwareResponse");
setAttribute(((StateAwareResponse) response).getRenderParameters(), "mutableRenderParams");
}
if (response instanceof MimeResponse) {
setAttribute(response, "mimeResponse");
}
if(request instanceof HeaderRequest){
setAttribute(request, "headerRequest");
setAttribute(response, "headerResponse");
}
super.setPortletRequestResponseAttribute(request, response);
}
}