001 // Copyright 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry.portlet; 016 017 import org.apache.hivemind.util.Defense; 018 import org.apache.tapestry.describe.DescriptionReceiver; 019 import org.apache.tapestry.web.WebRequest; 020 import org.apache.tapestry.web.WebSession; 021 import org.apache.tapestry.web.WebUtils; 022 023 import javax.portlet.PortletRequest; 024 import javax.portlet.PortletSession; 025 import java.security.Principal; 026 import java.util.List; 027 import java.util.Locale; 028 029 /** 030 * Implementation of {@link org.apache.tapestry.web.WebRequest} that adapts a 031 * {@link PortletRequest} . 032 * 033 * @author Howard M. Lewis Ship 034 * @since 4.0 035 */ 036 public class PortletWebRequest implements WebRequest 037 { 038 039 private final PortletRequest _portletRequest; 040 041 private WebSession _webSession; 042 043 public PortletWebRequest(PortletRequest portletRequest) 044 { 045 Defense.notNull(portletRequest, "portletRequest"); 046 047 _portletRequest = portletRequest; 048 } 049 050 public List getParameterNames() 051 { 052 return WebUtils.toSortedList(_portletRequest.getParameterNames()); 053 } 054 055 public String getParameterValue(String parameterName) 056 { 057 return _portletRequest.getParameter(parameterName); 058 } 059 060 public String[] getParameterValues(String parameterName) 061 { 062 return _portletRequest.getParameterValues(parameterName); 063 } 064 065 public String getContextPath() 066 { 067 return _portletRequest.getContextPath(); 068 } 069 070 public WebSession getSession(boolean create) 071 { 072 if (_webSession != null) return _webSession; 073 074 PortletSession session = _portletRequest.getPortletSession(create); 075 076 if (session != null) _webSession = new PortletWebSession(session); 077 078 return _webSession; 079 } 080 081 public String getScheme() 082 { 083 return _portletRequest.getScheme(); 084 } 085 086 public String getServerName() 087 { 088 return _portletRequest.getServerName(); 089 } 090 091 public int getServerPort() 092 { 093 return _portletRequest.getServerPort(); 094 } 095 096 /** 097 * Returns "<PortletRequest>", because portlets don't have a notion of 098 * request URI. 099 */ 100 101 public String getRequestURI() 102 { 103 return "<PortletRequest>"; 104 } 105 106 public void forward(String URL) 107 { 108 unsupported("forward"); 109 } 110 111 public String getActivationPath() 112 { 113 return ""; 114 } 115 116 /** 117 * Returns null, always. 118 */ 119 public String getPathInfo() 120 { 121 return null; 122 } 123 124 public List getAttributeNames() 125 { 126 return WebUtils.toSortedList(_portletRequest.getAttributeNames()); 127 } 128 129 public Object getAttribute(String name) 130 { 131 return _portletRequest.getAttribute(name); 132 } 133 134 public void setAttribute(String name, Object attribute) 135 { 136 if (attribute == null) 137 _portletRequest.removeAttribute(name); 138 else 139 _portletRequest.setAttribute(name, attribute); 140 } 141 142 protected final void unsupported(String methodName) 143 { 144 throw new UnsupportedOperationException(PortletMessages.unsupportedMethod(methodName)); 145 } 146 147 public void describeTo(DescriptionReceiver receiver) 148 { 149 receiver.describeAlternate(_portletRequest); 150 } 151 152 public Locale getLocale() 153 { 154 return _portletRequest.getLocale(); 155 } 156 157 public String getHeader(String name) 158 { 159 unsupported("getHeader"); 160 161 return null; 162 } 163 164 public long getDateHeader(String name) 165 { 166 unsupported("getDateHeader"); 167 168 return -1; 169 } 170 171 public int getIntHeader(String name) 172 { 173 unsupported("getIntHeader"); 174 175 return -1; 176 } 177 178 public String getRemoteUser() 179 { 180 return _portletRequest.getRemoteUser(); 181 } 182 183 public Principal getUserPrincipal() 184 { 185 return _portletRequest.getUserPrincipal(); 186 } 187 188 public boolean isUserInRole(String role) 189 { 190 return _portletRequest.isUserInRole(role); 191 } 192 193 public boolean isSecure() 194 { 195 return _portletRequest.isSecure(); 196 } 197 }