1 16 19 20 package org.apache.pluto.core.impl; 21 22 import java.io.BufferedReader ; 23 import java.util.Collections ; 24 import java.util.Enumeration ; 25 import java.util.HashSet ; 26 import java.util.Iterator ; 27 import java.util.Map ; 28 import java.util.Set ; 29 import java.util.Vector ; 30 31 import javax.portlet.PortalContext; 32 import javax.portlet.PortletMode; 33 import javax.portlet.PortletPreferences; 34 import javax.portlet.PortletRequest; 35 import javax.portlet.PortletSession; 36 import javax.portlet.WindowState; 37 import javax.servlet.http.Cookie ; 38 import javax.servlet.http.HttpSession ; 39 40 import org.apache.pluto.core.InternalPortletRequest; 41 import org.apache.pluto.factory.PortletObjectAccess; 42 import org.apache.pluto.om.common.SecurityRoleRef; 43 import org.apache.pluto.om.common.SecurityRoleRefSet; 44 import org.apache.pluto.om.entity.PortletEntity; 45 import org.apache.pluto.om.portlet.PortletDefinition; 46 import org.apache.pluto.om.window.PortletWindow; 47 import org.apache.pluto.services.information.DynamicInformationProvider; 48 import org.apache.pluto.services.information.InformationProviderAccess; 49 import org.apache.pluto.services.property.PropertyManager; 50 import org.apache.pluto.util.Enumerator; 51 import org.apache.pluto.util.NamespaceMapperAccess; 52 import org.apache.pluto.util.StringUtils; 53 54 public abstract class PortletRequestImpl extends 55 javax.servlet.http.HttpServletRequestWrapper implements PortletRequest, 56 InternalPortletRequest { 57 58 private PortletWindow portletWindow; 59 60 63 private PortletSession portletSession; 64 65 private DynamicInformationProvider provider; 66 67 70 private boolean bodyAccessed; 71 72 75 private boolean included; 76 77 public PortletRequestImpl(PortletWindow portletWindow, 78 javax.servlet.http.HttpServletRequest servletRequest) { 79 super(servletRequest); 80 this.portletWindow = portletWindow; 81 82 provider = InformationProviderAccess 83 .getDynamicProvider(_getHttpServletRequest()); 84 } 85 86 public boolean isWindowStateAllowed(WindowState state) { 87 return provider.isWindowStateAllowed(state); 88 } 89 90 public boolean isPortletModeAllowed(PortletMode portletMode) { 91 boolean supported = provider.isPortletModeAllowed(portletMode); 93 94 if (supported) { 96 supported = PortletModeHelper.isPortletModeAllowedByPortlet( 97 portletWindow, portletMode); 98 } 99 100 return supported; 101 } 102 103 public PortletMode getPortletMode() { 104 return provider.getPortletMode(portletWindow); 105 } 106 107 public WindowState getWindowState() { 108 return provider.getWindowState(portletWindow); 109 } 110 111 public abstract PortletPreferences getPreferences(); 113 114 public PortletSession getPortletSession() { 115 return getPortletSession(true); 116 } 117 118 public PortletSession getPortletSession(boolean create) { 119 javax.servlet.http.HttpSession httpSession = this 121 ._getHttpServletRequest().getSession(false); 122 123 if ((portletSession != null) && (httpSession == null)) { 124 portletSession = null; 125 } else if (httpSession != null) { 126 create = true; 127 } 128 129 if (create && portletSession == null) { 130 httpSession = this._getHttpServletRequest().getSession(create); 131 if (httpSession != null) { 132 portletSession = PortletObjectAccess.getPortletSession( 133 portletWindow, httpSession); 134 } 135 } 136 137 return portletSession; 138 } 139 140 public String getProperty(String name) { 141 if (name == null) { 142 throw new IllegalArgumentException ("Attribute name == null"); 143 } 144 145 String prop = this._getHttpServletRequest().getHeader(name); 147 if (prop == null) { 148 Map map = PropertyManager.getRequestProperties(portletWindow, this 150 ._getHttpServletRequest()); 151 if (map != null) { 152 String [] properties = (String []) map.get(name); 153 if ((properties != null) && (properties.length > 0)) { 154 prop = properties[0]; 155 } 156 } 157 } 158 159 return prop; 160 } 161 162 public Enumeration getProperties(String name) { 163 if (name == null) { 164 throw new IllegalArgumentException ("Property name == null"); 165 } 166 167 Set v = new HashSet (); 168 169 Enumeration props = this._getHttpServletRequest().getHeaders(name); 171 if (props != null) { 172 while (props.hasMoreElements()) { 173 v.add(props.nextElement()); 174 } 175 } 176 177 Map map = PropertyManager.getRequestProperties(portletWindow, this 179 ._getHttpServletRequest()); 180 if (map != null) { 181 String [] properties = (String []) map.get(name); 182 183 if (properties != null) { 184 for (int i = 0; i < properties.length; i++) { 186 v.add(properties[i]); 187 } 188 } 189 } 190 191 return new Enumerator(v.iterator()); 192 } 193 194 public Enumeration getPropertyNames() { 195 Set v = new HashSet (); 196 197 Map map = PropertyManager.getRequestProperties(portletWindow, this 199 ._getHttpServletRequest()); 200 if (map != null) { 201 v.addAll(map.keySet()); 202 } 203 204 Enumeration props = this._getHttpServletRequest().getHeaderNames(); 206 if (props != null) { 207 while (props.hasMoreElements()) { 208 v.add(props.nextElement()); 209 } 210 } 211 212 return new Enumerator(v.iterator()); 213 } 214 215 public PortalContext getPortalContext() { 216 return PortletObjectAccess.getPortalContext(); 217 } 218 219 public String getAuthType() { 220 return this._getHttpServletRequest().getAuthType(); 221 } 222 223 public String getContextPath() { 224 return portletWindow.getPortletEntity().getPortletDefinition() 225 .getPortletApplicationDefinition() 226 .getWebApplicationDefinition().getContextRoot(); 227 228 } 231 232 public String getRemoteUser() { 233 return this._getHttpServletRequest().getRemoteUser(); 234 } 235 236 public java.security.Principal getUserPrincipal() { 237 return this._getHttpServletRequest().getUserPrincipal(); 238 } 239 240 252 public boolean isUserInRole(String roleName) { 253 PortletEntity entity = portletWindow.getPortletEntity(); 254 PortletDefinition def = entity.getPortletDefinition(); 255 SecurityRoleRefSet set = def.getInitSecurityRoleRefSet(); 256 SecurityRoleRef ref = set.get(roleName); 257 258 String link = null; 259 if (ref != null && ref.getRoleLink() != null) { 260 link = ref.getRoleLink(); 261 } else { 262 link = roleName; 263 } 264 265 return this._getHttpServletRequest().isUserInRole(link); 266 } 267 268 public Object getAttribute(String name) { 269 if (name == null) { 270 throw new IllegalArgumentException ("Attribute name == null"); 271 } 272 273 Object attribute = this._getHttpServletRequest().getAttribute( 274 NamespaceMapperAccess.getNamespaceMapper().encode( 275 portletWindow.getId(), name)); 276 277 if (attribute == null) { 278 attribute = this._getHttpServletRequest().getAttribute(name); 279 } 280 return attribute; 281 } 282 283 public Enumeration getAttributeNames() { 284 Enumeration attributes = this._getHttpServletRequest() 285 .getAttributeNames(); 286 287 Vector portletAttributes = new Vector (); 288 289 while (attributes.hasMoreElements()) { 290 String attribute = (String ) attributes.nextElement(); 291 292 String portletAttribute = NamespaceMapperAccess 293 .getNamespaceMapper().decode(portletWindow.getId(), 294 attribute); 295 296 if (portletAttribute != null) { portletAttributes.add(portletAttribute); 298 } 299 else { 300 portletAttributes.add(attribute); 301 } 302 } 303 return portletAttributes.elements(); 304 } 305 306 public String getParameter(String name) { 307 if (name == null) { 308 throw new IllegalArgumentException ("Parameter name == null"); 309 } 310 311 bodyAccessed = true; 312 313 Map parameters = getParameterMap(); 314 String [] values = (String []) parameters.get(name); 315 if (values != null) { 316 return values[0]; 317 } 318 return null; 319 } 320 321 public java.util.Enumeration getParameterNames() { 322 bodyAccessed = true; 323 324 Map parameters = getParameterMap(); 325 return Collections.enumeration(parameters.keySet()); 326 } 327 328 public String [] getParameterValues(String name) { 329 if (name == null) { 330 throw new IllegalArgumentException ("Parameter name == null"); 331 } 332 333 bodyAccessed = true; 334 335 String [] values = (String []) getParameterMap().get(name); 336 if (values != null) 337 values = StringUtils.copy(values); 338 return values; 339 } 340 341 public Map getParameterMap() { 342 bodyAccessed = true; 343 Map result = 344 StringUtils.copyParameters( 345 this._getHttpServletRequest().getParameterMap() 346 ); 347 return result; 348 } 349 350 public boolean isSecure() { 351 return this._getHttpServletRequest().isSecure(); 352 } 353 354 public void setAttribute(String name, Object o) { 355 if (name == null) { 356 throw new IllegalArgumentException ("Attribute name == null"); 357 } 358 359 if (o == null) { 360 this.removeAttribute(name); 361 } else if (isNameReserved(name)) { 362 _getHttpServletRequest().setAttribute(name, o); 364 } else { 365 this._getHttpServletRequest().setAttribute( 366 NamespaceMapperAccess.getNamespaceMapper().encode( 367 portletWindow.getId(), name), o); 368 } 369 } 370 371 public void removeAttribute(String name) { 372 if (name == null) { 373 throw new IllegalArgumentException ("Attribute name == null"); 374 } 375 if (isNameReserved(name)) { 376 _getHttpServletRequest().removeAttribute(name); 378 } else { 379 380 this._getHttpServletRequest().removeAttribute( 381 NamespaceMapperAccess.getNamespaceMapper().encode( 382 portletWindow.getId(), name)); 383 } 384 } 385 386 public String getRequestedSessionId() { 387 return this._getHttpServletRequest().getRequestedSessionId(); 388 } 389 390 public boolean isRequestedSessionIdValid() { 391 return this._getHttpServletRequest().isRequestedSessionIdValid(); 392 } 393 394 public String getResponseContentType() { 395 String responseContentType = provider.getResponseContentType(); 397 398 return responseContentType; 399 } 400 401 public Enumeration getResponseContentTypes() { 402 Iterator responseContentTypes = provider.getResponseContentTypes(); 404 405 return new Enumerator(responseContentTypes); 406 } 407 408 public java.util.Locale getLocale() { 409 return this._getHttpServletRequest().getLocale(); 410 } 411 412 public Enumeration getLocales() { 413 return this._getHttpServletRequest().getLocales(); 414 } 415 416 public String getScheme() { 417 return this._getHttpServletRequest().getScheme(); 418 } 419 420 public String getServerName() { 421 return this._getHttpServletRequest().getServerName(); 422 } 423 424 public int getServerPort() { 425 return this._getHttpServletRequest().getServerPort(); 426 } 427 428 430 public void lateInit( 433 javax.servlet.http.HttpServletRequest webModuleServletRequest) { 434 this.setRequest(webModuleServletRequest); 435 } 436 437 public PortletWindow getInternalPortletWindow() { 438 return portletWindow; 439 } 440 441 public void setIncluded(boolean included) { 442 this.included = included; 443 } 444 445 public boolean isIncluded() { 446 return included; 447 } 448 449 451 private javax.servlet.http.HttpServletRequest _getHttpServletRequest() { 454 return (javax.servlet.http.HttpServletRequest ) super.getRequest(); 455 } 456 457 461 private boolean isNameReserved(String name) { 462 return name.startsWith("java.") || name.startsWith("javax."); 463 } 464 465 467 public java.lang.String getCharacterEncoding() { 470 return this._getHttpServletRequest().getCharacterEncoding(); 471 } 472 473 public java.lang.String getContentType() { 474 if (included) { 475 return null; 476 } else { 477 return this._getHttpServletRequest().getContentType(); 478 } 479 } 480 481 public int getContentLength() { 482 if (included) { 483 return 0; 484 } else { 485 return _getHttpServletRequest().getContentLength(); 486 } 487 } 488 489 public BufferedReader getReader() 490 throws java.io.UnsupportedEncodingException , java.io.IOException { 491 if (included) { 492 return null; 493 } else { 494 BufferedReader reader = _getHttpServletRequest().getReader(); 497 498 bodyAccessed = true; 499 500 return reader; 501 } 502 } 503 504 public Cookie [] getCookies() { 505 return this._getHttpServletRequest().getCookies(); 506 } 507 508 public long getDateHeader(String name) { 509 return this._getHttpServletRequest().getDateHeader(name); 510 } 511 512 public String getHeader(String name) { 513 return this._getHttpServletRequest().getHeader(name); 514 } 515 516 public Enumeration getHeaders(String name) { 517 return this._getHttpServletRequest().getHeaders(name); 518 } 519 520 public Enumeration getHeaderNames() { 521 return this._getHttpServletRequest().getHeaderNames(); 522 } 523 524 public int getIntHeader(String name) { 525 return this._getHttpServletRequest().getIntHeader(name); 526 527 } 528 529 public String getPathInfo() { 530 String attr = (String ) super 531 .getAttribute("javax.servlet.include.path_info"); 532 return (attr != null) ? attr : super.getPathInfo(); 533 } 534 535 public String getQueryString() { 536 String attr = (String ) super 537 .getAttribute("javax.servlet.include.query_string"); 538 return (attr != null) ? attr : super.getQueryString(); 539 } 540 541 public String getPathTranslated() { 542 return null; 543 } 544 545 public String getRequestURI() { 546 String attr = (String ) super 547 .getAttribute("javax.servlet.include.request_uri"); 548 return (attr != null) ? attr : super.getRequestURI(); 549 } 550 551 public StringBuffer getRequestURL() { 552 return null; 553 } 554 555 public String getServletPath() { 556 String attr = (String ) super 557 .getAttribute("javax.servlet.include.servlet_path"); 558 return (attr != null) ? attr : super.getServletPath(); 559 } 560 561 public HttpSession getSession(boolean create) { 562 return this._getHttpServletRequest().getSession(true); 563 } 564 565 public HttpSession getSession() { 566 return this._getHttpServletRequest().getSession(); 567 } 568 569 public String getMethod() { 570 return this._getHttpServletRequest().getMethod(); 572 } 573 574 public boolean isRequestedSessionIdFromURL() { 575 return this._getHttpServletRequest().isRequestedSessionIdFromURL(); 577 } 578 579 582 public boolean isRequestedSessionIdFromUrl() { 583 return this._getHttpServletRequest().isRequestedSessionIdFromUrl(); 584 } 585 586 public boolean isRequestedSessionIdFromCookie() { 587 return this._getHttpServletRequest().isRequestedSessionIdFromCookie(); 588 } 589 590 public String getProtocol() { 591 return null; 592 } 593 594 public String getRemoteAddr() { 595 return null; 596 } 597 598 public String getRemoteHost() { 599 return null; 600 } 601 602 public String getRealPath(String path) { 603 return null; 604 } 605 606 public void setCharacterEncoding(String env) 607 throws java.io.UnsupportedEncodingException { 608 if (bodyAccessed) { 609 throw new IllegalStateException ( 610 "This method must not be called after the HTTP-Body was accessed !"); 611 } 612 613 this._getHttpServletRequest().setCharacterEncoding(env); 614 return; 615 } 616 617 public javax.servlet.ServletInputStream getInputStream() 618 throws java.io.IOException { 619 if (included) { 620 return null; 621 } else { 622 javax.servlet.ServletInputStream stream = _getHttpServletRequest() 625 .getInputStream(); 626 627 bodyAccessed = true; 628 629 return stream; 630 } 631 } 632 633 public javax.servlet.RequestDispatcher getRequestDispatcher(String path) { 634 return this._getHttpServletRequest().getRequestDispatcher(path); 635 } 636 } | Popular Tags |