Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/Request.java @ 997:7d28be82ab75
simplify Request
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Tue, 18 Oct 2016 22:43:17 -0600 |
| parents | 4e9d373bf6e9 |
| children | bf176925e00f |
comparison
equal
deleted
inserted
replaced
| 996:d9cfec64899c | 997:7d28be82ab75 |
|---|---|
| 120 * | 120 * |
| 121 * | 121 * |
| 122 */ | 122 */ |
| 123 public final class Request implements HttpServletRequest | 123 public final class Request implements HttpServletRequest |
| 124 { | 124 { |
| 125 public static final String __MULTIPART_CONFIG_ELEMENT = "org.eclipse.multipartConfig"; | |
| 126 public static final String __MULTIPART_INPUT_STREAM = "org.eclipse.multiPartInputStream"; | |
| 127 public static final String __MULTIPART_CONTEXT = "org.eclipse.multiPartContext"; | |
| 128 private static final Logger LOG = LoggerFactory.getLogger(Request.class); | 125 private static final Logger LOG = LoggerFactory.getLogger(Request.class); |
| 129 | 126 |
| 130 private static final String __ASYNC_FWD = "org.eclipse.asyncfwd"; | |
| 131 private static final Collection __defaultLocale = Collections.singleton(Locale.getDefault()); | 127 private static final Collection __defaultLocale = Collections.singleton(Locale.getDefault()); |
| 132 private static final int __NONE = 0, _STREAM = 1, __READER = 2; | 128 private static final int __NONE = 0, _STREAM = 1, __READER = 2; |
| 133 | 129 |
| 134 private volatile Attributes _attributes; | 130 private volatile Attributes _attributes; |
| 135 private MultiMap<String> _baseParameters; | 131 private MultiMap<String> _baseParameters; |
| 136 private String _characterEncoding; | 132 private String _characterEncoding; |
| 137 protected AbstractHttpConnection _connection; | 133 protected final AbstractHttpConnection _connection; |
| 138 public ContextHandler _contextHandler = null; | 134 public ContextHandler _contextHandler = null; |
| 139 private String _contextPath; | 135 private String _contextPath; |
| 140 private CookieCutter _cookies; | 136 private CookieCutter _cookies; |
| 141 private boolean _cookiesExtracted = false; | 137 private boolean _cookiesExtracted = false; |
| 142 private EndPoint _endp; | 138 private final EndPoint _endp; |
| 143 private boolean _handled = false; | 139 private boolean _handled = false; |
| 144 private int _inputState = __NONE; | 140 private int _inputState = __NONE; |
| 145 private String _method; | 141 private String _method; |
| 146 private MultiMap<String> _parameters; | 142 private MultiMap<String> _parameters; |
| 147 private boolean _paramsExtracted; | 143 private boolean _paramsExtracted; |
| 149 private int _port; | 145 private int _port; |
| 150 private String _protocol = HttpVersions.HTTP_1_1; | 146 private String _protocol = HttpVersions.HTTP_1_1; |
| 151 private String _queryString; | 147 private String _queryString; |
| 152 private BufferedReader _reader; | 148 private BufferedReader _reader; |
| 153 private String _readerEncoding; | 149 private String _readerEncoding; |
| 154 private String _remoteAddr; | |
| 155 private String _remoteHost; | |
| 156 private String _requestURI; | 150 private String _requestURI; |
| 157 private String _scheme = URIUtil.HTTP; | 151 private String _scheme = URIUtil.HTTP; |
| 158 private String _serverName; | 152 private String _serverName; |
| 159 private String _servletPath; | |
| 160 private long _timeStamp; | 153 private long _timeStamp; |
| 161 private long _dispatchTime; | 154 |
| 162 | |
| 163 private Buffer _timeStampBuffer; | |
| 164 private HttpURI _uri; | 155 private HttpURI _uri; |
| 165 | 156 |
| 166 /* ------------------------------------------------------------ */ | |
| 167 public Request() | |
| 168 { | |
| 169 } | |
| 170 | |
| 171 /* ------------------------------------------------------------ */ | |
| 172 public Request(AbstractHttpConnection connection) | 157 public Request(AbstractHttpConnection connection) |
| 173 { | 158 { |
| 174 setConnection(connection); | 159 _connection = connection; |
| 160 _endp = connection.getEndPoint(); | |
| 175 } | 161 } |
| 176 | 162 |
| 177 /* ------------------------------------------------------------ */ | 163 /* ------------------------------------------------------------ */ |
| 178 /** | 164 /** |
| 179 * Extract Parameters from query string and/or form _content. | 165 * Extract Parameters from query string and/or form _content. |
| 180 */ | 166 */ |
| 181 public void extractParameters() | 167 private void extractParameters() |
| 182 { | 168 { |
| 183 if (_baseParameters == null) | 169 if (_baseParameters == null) |
| 184 _baseParameters = new MultiMap(16); | 170 _baseParameters = new MultiMap(16); |
| 185 | 171 |
| 186 if (_paramsExtracted) | 172 if (_paramsExtracted) |
| 262 Object values = entry.getValue(); | 248 Object values = entry.getValue(); |
| 263 for (int i = 0; i < LazyList.size(values); i++) | 249 for (int i = 0; i < LazyList.size(values); i++) |
| 264 _parameters.add(name,LazyList.get(values,i)); | 250 _parameters.add(name,LazyList.get(values,i)); |
| 265 } | 251 } |
| 266 } | 252 } |
| 267 | |
| 268 if (content_type != null && content_type.length()>0 && content_type.startsWith("multipart/form-data") && getAttribute(__MULTIPART_CONFIG_ELEMENT)!=null) | |
| 269 { | |
| 270 try | |
| 271 { | |
| 272 getParts(); | |
| 273 } | |
| 274 catch (IOException e) | |
| 275 { | |
| 276 if (LOG.isDebugEnabled()) | |
| 277 LOG.warn("",e); | |
| 278 else | |
| 279 LOG.warn(e.toString()); | |
| 280 } | |
| 281 catch (ServletException e) | |
| 282 { | |
| 283 if (LOG.isDebugEnabled()) | |
| 284 LOG.warn("",e); | |
| 285 else | |
| 286 LOG.warn(e.toString()); | |
| 287 } | |
| 288 } | |
| 289 } | 253 } |
| 290 finally | 254 finally |
| 291 { | 255 { |
| 292 // ensure params always set (even if empty) after extraction | 256 // ensure params always set (even if empty) after extraction |
| 293 if (_parameters == null) | 257 if (_parameters == null) |
| 294 _parameters = _baseParameters; | 258 _parameters = _baseParameters; |
| 295 } | 259 } |
| 296 } | 260 } |
| 297 | 261 |
| 298 /* ------------------------------------------------------------ */ | 262 @Override |
| 299 public AsyncContext getAsyncContext() | 263 public AsyncContext getAsyncContext() |
| 300 { | 264 { |
| 301 throw new UnsupportedOperationException(); | 265 throw new UnsupportedOperationException(); |
| 302 } | 266 } |
| 303 | 267 |
| 304 /* ------------------------------------------------------------ */ | 268 @Override |
| 305 /* | |
| 306 * @see javax.servlet.ServletRequest#getAttribute(java.lang.String) | |
| 307 */ | |
| 308 public Object getAttribute(String name) | 269 public Object getAttribute(String name) |
| 309 { | 270 { |
| 310 if ("org.eclipse.jetty.io.EndPoint.maxIdleTime".equalsIgnoreCase(name)) | 271 return (_attributes == null)?null:_attributes.getAttribute(name); |
| 311 return new Long(getConnection().getEndPoint().getMaxIdleTime()); | 272 } |
| 312 | 273 |
| 313 Object attr = (_attributes == null)?null:_attributes.getAttribute(name); | 274 @Override |
| 314 return attr; | |
| 315 } | |
| 316 | |
| 317 /* ------------------------------------------------------------ */ | |
| 318 /* | |
| 319 * @see javax.servlet.ServletRequest#getAttributeNames() | |
| 320 */ | |
| 321 public Enumeration getAttributeNames() | 275 public Enumeration getAttributeNames() |
| 322 { | 276 { |
| 323 if (_attributes == null) | 277 if (_attributes == null) |
| 324 return Collections.enumeration(Collections.EMPTY_LIST); | 278 return Collections.enumeration(Collections.EMPTY_LIST); |
| 325 | 279 |
| 326 return AttributesMap.getAttributeNamesCopy(_attributes); | 280 return AttributesMap.getAttributeNamesCopy(_attributes); |
| 327 } | 281 } |
| 328 | 282 |
| 329 /* ------------------------------------------------------------ */ | 283 @Override |
| 330 /* | |
| 331 */ | |
| 332 public Attributes getAttributes() | |
| 333 { | |
| 334 if (_attributes == null) | |
| 335 _attributes = new AttributesMap(); | |
| 336 return _attributes; | |
| 337 } | |
| 338 | |
| 339 /* ------------------------------------------------------------ */ | |
| 340 /* | |
| 341 * @see javax.servlet.http.HttpServletRequest#getAuthType() | |
| 342 */ | |
| 343 public String getAuthType() | 284 public String getAuthType() |
| 344 { | 285 { |
| 345 return null; | 286 return null; |
| 346 } | 287 } |
| 347 | 288 |
| 348 /* ------------------------------------------------------------ */ | 289 @Override |
| 349 /* | |
| 350 * @see javax.servlet.ServletRequest#getCharacterEncoding() | |
| 351 */ | |
| 352 public String getCharacterEncoding() | 290 public String getCharacterEncoding() |
| 353 { | 291 { |
| 354 return _characterEncoding; | 292 return _characterEncoding; |
| 355 } | 293 } |
| 356 | 294 |
| 357 /* ------------------------------------------------------------ */ | 295 @Override |
| 358 /** | |
| 359 * @return Returns the connection. | |
| 360 */ | |
| 361 public AbstractHttpConnection getConnection() | |
| 362 { | |
| 363 return _connection; | |
| 364 } | |
| 365 | |
| 366 /* ------------------------------------------------------------ */ | |
| 367 /* | |
| 368 * @see javax.servlet.ServletRequest#getContentLength() | |
| 369 */ | |
| 370 public int getContentLength() | 296 public int getContentLength() |
| 371 { | 297 { |
| 372 return (int)_connection._requestFields.getLongField(HttpHeaders.CONTENT_LENGTH_BUFFER); | 298 return (int)_connection._requestFields.getLongField(HttpHeaders.CONTENT_LENGTH_BUFFER); |
| 373 } | 299 } |
| 374 | 300 |
| 375 public long getContentRead() | 301 @Override |
| 376 { | |
| 377 if (_connection == null) | |
| 378 return -1; | |
| 379 | |
| 380 return _connection._parser.getContentRead(); | |
| 381 } | |
| 382 | |
| 383 /* ------------------------------------------------------------ */ | |
| 384 /* | |
| 385 * @see javax.servlet.ServletRequest#getContentType() | |
| 386 */ | |
| 387 public String getContentType() | 302 public String getContentType() |
| 388 { | 303 { |
| 389 return _connection._requestFields.getStringField(HttpHeaders.CONTENT_TYPE_BUFFER); | 304 return _connection._requestFields.getStringField(HttpHeaders.CONTENT_TYPE_BUFFER); |
| 390 } | 305 } |
| 391 | 306 |
| 392 /* ------------------------------------------------------------ */ | 307 @Override |
| 393 /* | |
| 394 * @see javax.servlet.http.HttpServletRequest#getContextPath() | |
| 395 */ | |
| 396 public String getContextPath() | 308 public String getContextPath() |
| 397 { | 309 { |
| 398 return _contextPath; | 310 return _contextPath; |
| 399 } | 311 } |
| 400 | 312 |
| 401 /* ------------------------------------------------------------ */ | 313 @Override |
| 402 /* | |
| 403 * @see javax.servlet.http.HttpServletRequest#getCookies() | |
| 404 */ | |
| 405 public Cookie[] getCookies() | 314 public Cookie[] getCookies() |
| 406 { | 315 { |
| 407 if (_cookiesExtracted) | 316 if (_cookiesExtracted) |
| 408 return _cookies == null?null:_cookies.getCookies(); | 317 return _cookies == null?null:_cookies.getCookies(); |
| 409 | 318 |
| 425 } | 334 } |
| 426 | 335 |
| 427 return _cookies == null?null:_cookies.getCookies(); | 336 return _cookies == null?null:_cookies.getCookies(); |
| 428 } | 337 } |
| 429 | 338 |
| 430 /* ------------------------------------------------------------ */ | 339 @Override |
| 431 /* | |
| 432 * @see javax.servlet.http.HttpServletRequest#getDateHeader(java.lang.String) | |
| 433 */ | |
| 434 public long getDateHeader(String name) | 340 public long getDateHeader(String name) |
| 435 { | 341 { |
| 436 return _connection._requestFields.getDateField(name); | 342 return _connection._requestFields.getDateField(name); |
| 437 } | 343 } |
| 438 | 344 |
| 440 public DispatcherType getDispatcherType() | 346 public DispatcherType getDispatcherType() |
| 441 { | 347 { |
| 442 throw new UnsupportedOperationException(); | 348 throw new UnsupportedOperationException(); |
| 443 } | 349 } |
| 444 | 350 |
| 445 /* ------------------------------------------------------------ */ | 351 @Override |
| 446 /* | |
| 447 * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String) | |
| 448 */ | |
| 449 public String getHeader(String name) | 352 public String getHeader(String name) |
| 450 { | 353 { |
| 451 return _connection._requestFields.getStringField(name); | 354 return _connection._requestFields.getStringField(name); |
| 452 } | 355 } |
| 453 | 356 |
| 454 /* ------------------------------------------------------------ */ | 357 @Override |
| 455 /* | |
| 456 * @see javax.servlet.http.HttpServletRequest#getHeaderNames() | |
| 457 */ | |
| 458 public Enumeration getHeaderNames() | 358 public Enumeration getHeaderNames() |
| 459 { | 359 { |
| 460 return _connection._requestFields.getFieldNames(); | 360 return _connection._requestFields.getFieldNames(); |
| 461 } | 361 } |
| 462 | 362 |
| 463 /* ------------------------------------------------------------ */ | 363 @Override |
| 464 /* | |
| 465 * @see javax.servlet.http.HttpServletRequest#getHeaders(java.lang.String) | |
| 466 */ | |
| 467 public Enumeration getHeaders(String name) | 364 public Enumeration getHeaders(String name) |
| 468 { | 365 { |
| 469 Enumeration e = _connection._requestFields.getValues(name); | 366 Enumeration e = _connection._requestFields.getValues(name); |
| 470 if (e == null) | 367 if (e == null) |
| 471 return Collections.enumeration(Collections.EMPTY_LIST); | 368 return Collections.enumeration(Collections.EMPTY_LIST); |
| 472 return e; | 369 return e; |
| 473 } | 370 } |
| 474 | 371 |
| 475 /* ------------------------------------------------------------ */ | 372 @Override |
| 476 /** | |
| 477 * @return Returns the inputState. | |
| 478 */ | |
| 479 public int getInputState() | |
| 480 { | |
| 481 return _inputState; | |
| 482 } | |
| 483 | |
| 484 /* ------------------------------------------------------------ */ | |
| 485 /* | |
| 486 * @see javax.servlet.ServletRequest#getInputStream() | |
| 487 */ | |
| 488 public ServletInputStream getInputStream() throws IOException | 373 public ServletInputStream getInputStream() throws IOException |
| 489 { | 374 { |
| 490 if (_inputState != __NONE && _inputState != _STREAM) | 375 if (_inputState != __NONE && _inputState != _STREAM) |
| 491 throw new IllegalStateException("READER"); | 376 throw new IllegalStateException("READER"); |
| 492 _inputState = _STREAM; | 377 _inputState = _STREAM; |
| 493 return _connection.getInputStream(); | 378 return _connection.getInputStream(); |
| 494 } | 379 } |
| 495 | 380 |
| 496 /* ------------------------------------------------------------ */ | 381 @Override |
| 497 /* | |
| 498 * @see javax.servlet.http.HttpServletRequest#getIntHeader(java.lang.String) | |
| 499 */ | |
| 500 public int getIntHeader(String name) | 382 public int getIntHeader(String name) |
| 501 { | 383 { |
| 502 return (int)_connection._requestFields.getLongField(name); | 384 return (int)_connection._requestFields.getLongField(name); |
| 503 } | 385 } |
| 504 | 386 |
| 505 /* ------------------------------------------------------------ */ | 387 @Override |
| 506 /* | |
| 507 * @see javax.servlet.ServletRequest#getLocalAddr() | |
| 508 */ | |
| 509 public String getLocalAddr() | 388 public String getLocalAddr() |
| 510 { | 389 { |
| 511 return _endp == null?null:_endp.getLocalAddr(); | 390 return _endp.getLocalAddr(); |
| 512 } | 391 } |
| 513 | 392 |
| 514 /* ------------------------------------------------------------ */ | 393 @Override |
| 515 /* | |
| 516 * @see javax.servlet.ServletRequest#getLocale() | |
| 517 */ | |
| 518 public Locale getLocale() | 394 public Locale getLocale() |
| 519 { | 395 { |
| 520 Enumeration enm = _connection._requestFields.getValues( "Accept-Language", ", \t" ); | 396 Enumeration enm = _connection._requestFields.getValues( "Accept-Language", ", \t" ); |
| 521 | 397 |
| 522 // handle no locale | 398 // handle no locale |
| 545 } | 421 } |
| 546 | 422 |
| 547 return Locale.getDefault(); | 423 return Locale.getDefault(); |
| 548 } | 424 } |
| 549 | 425 |
| 550 /* ------------------------------------------------------------ */ | 426 @Override |
| 551 /* | |
| 552 * @see javax.servlet.ServletRequest#getLocales() | |
| 553 */ | |
| 554 public Enumeration getLocales() | 427 public Enumeration getLocales() |
| 555 { | 428 { |
| 556 | 429 |
| 557 Enumeration enm = _connection._requestFields.getValues( "Accept-Language", ", \t" ); | 430 Enumeration enm = _connection._requestFields.getValues( "Accept-Language", ", \t" ); |
| 558 | 431 |
| 589 return Collections.enumeration(__defaultLocale); | 462 return Collections.enumeration(__defaultLocale); |
| 590 | 463 |
| 591 return Collections.enumeration(LazyList.getList(langs)); | 464 return Collections.enumeration(LazyList.getList(langs)); |
| 592 } | 465 } |
| 593 | 466 |
| 594 /* ------------------------------------------------------------ */ | 467 @Override |
| 595 /* | |
| 596 * @see javax.servlet.ServletRequest#getLocalName() | |
| 597 */ | |
| 598 public String getLocalName() | 468 public String getLocalName() |
| 599 { | 469 { |
| 600 if (_endp == null) | |
| 601 return null; | |
| 602 | |
| 603 String local = _endp.getLocalAddr(); | 470 String local = _endp.getLocalAddr(); |
| 604 if (local != null && local.indexOf(':') >= 0) | 471 if (local != null && local.indexOf(':') >= 0) |
| 605 local = "[" + local + "]"; | 472 local = "[" + local + "]"; |
| 606 return local; | 473 return local; |
| 607 } | 474 } |
| 608 | 475 |
| 609 /* ------------------------------------------------------------ */ | 476 @Override |
| 610 /* | |
| 611 * @see javax.servlet.ServletRequest#getLocalPort() | |
| 612 */ | |
| 613 public int getLocalPort() | 477 public int getLocalPort() |
| 614 { | 478 { |
| 615 return _endp == null?0:_endp.getLocalPort(); | 479 return _endp.getLocalPort(); |
| 616 } | 480 } |
| 617 | 481 |
| 618 /* ------------------------------------------------------------ */ | 482 @Override |
| 619 /* | |
| 620 * @see javax.servlet.http.HttpServletRequest#getMethod() | |
| 621 */ | |
| 622 public String getMethod() | 483 public String getMethod() |
| 623 { | 484 { |
| 624 return _method; | 485 return _method; |
| 625 } | 486 } |
| 626 | 487 |
| 627 /* ------------------------------------------------------------ */ | 488 @Override |
| 628 /* | |
| 629 * @see javax.servlet.ServletRequest#getParameter(java.lang.String) | |
| 630 */ | |
| 631 public String getParameter(String name) | 489 public String getParameter(String name) |
| 632 { | 490 { |
| 633 if (!_paramsExtracted) | 491 if (!_paramsExtracted) |
| 634 extractParameters(); | 492 extractParameters(); |
| 635 return (String)_parameters.getValue(name,0); | 493 return (String)_parameters.getValue(name,0); |
| 636 } | 494 } |
| 637 | 495 |
| 638 /* ------------------------------------------------------------ */ | 496 @Override |
| 639 /* | |
| 640 * @see javax.servlet.ServletRequest#getParameterMap() | |
| 641 */ | |
| 642 public Map getParameterMap() | 497 public Map getParameterMap() |
| 643 { | 498 { |
| 644 if (!_paramsExtracted) | 499 if (!_paramsExtracted) |
| 645 extractParameters(); | 500 extractParameters(); |
| 646 | 501 |
| 647 return Collections.unmodifiableMap(_parameters.toStringArrayMap()); | 502 return Collections.unmodifiableMap(_parameters.toStringArrayMap()); |
| 648 } | 503 } |
| 649 | 504 |
| 650 /* ------------------------------------------------------------ */ | 505 @Override |
| 651 /* | |
| 652 * @see javax.servlet.ServletRequest#getParameterNames() | |
| 653 */ | |
| 654 public Enumeration getParameterNames() | 506 public Enumeration getParameterNames() |
| 655 { | 507 { |
| 656 if (!_paramsExtracted) | 508 if (!_paramsExtracted) |
| 657 extractParameters(); | 509 extractParameters(); |
| 658 return Collections.enumeration(_parameters.keySet()); | 510 return Collections.enumeration(_parameters.keySet()); |
| 659 } | 511 } |
| 660 | 512 |
| 661 /* ------------------------------------------------------------ */ | 513 @Override |
| 662 /** | |
| 663 * @return Returns the parameters. | |
| 664 */ | |
| 665 public MultiMap<String> getParameters() | |
| 666 { | |
| 667 return _parameters; | |
| 668 } | |
| 669 | |
| 670 /* ------------------------------------------------------------ */ | |
| 671 /* | |
| 672 * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String) | |
| 673 */ | |
| 674 public String[] getParameterValues(String name) | 514 public String[] getParameterValues(String name) |
| 675 { | 515 { |
| 676 if (!_paramsExtracted) | 516 if (!_paramsExtracted) |
| 677 extractParameters(); | 517 extractParameters(); |
| 678 List<Object> vals = _parameters.getValues(name); | 518 List<Object> vals = _parameters.getValues(name); |
| 679 if (vals == null) | 519 if (vals == null) |
| 680 return null; | 520 return null; |
| 681 return vals.toArray(new String[vals.size()]); | 521 return vals.toArray(new String[vals.size()]); |
| 682 } | 522 } |
| 683 | 523 |
| 684 /* ------------------------------------------------------------ */ | 524 @Override |
| 685 /* | |
| 686 * @see javax.servlet.http.HttpServletRequest#getPathInfo() | |
| 687 */ | |
| 688 public String getPathInfo() | 525 public String getPathInfo() |
| 689 { | 526 { |
| 690 return _pathInfo; | 527 return _pathInfo; |
| 691 } | 528 } |
| 692 | 529 |
| 694 public String getPathTranslated() | 531 public String getPathTranslated() |
| 695 { | 532 { |
| 696 return null; | 533 return null; |
| 697 } | 534 } |
| 698 | 535 |
| 699 /* ------------------------------------------------------------ */ | 536 @Override |
| 700 /* | |
| 701 * @see javax.servlet.ServletRequest#getProtocol() | |
| 702 */ | |
| 703 public String getProtocol() | 537 public String getProtocol() |
| 704 { | 538 { |
| 705 return _protocol; | 539 return _protocol; |
| 706 } | 540 } |
| 707 | 541 |
| 708 /* ------------------------------------------------------------ */ | 542 @Override |
| 709 /* | |
| 710 * @see javax.servlet.http.HttpServletRequest#getQueryString() | |
| 711 */ | |
| 712 public String getQueryString() | 543 public String getQueryString() |
| 713 { | 544 { |
| 714 if (_queryString == null && _uri != null) | 545 if (_queryString == null && _uri != null) |
| 715 { | 546 { |
| 716 _queryString = _uri.getQuery(); | 547 _queryString = _uri.getQuery(); |
| 717 } | 548 } |
| 718 return _queryString; | 549 return _queryString; |
| 719 } | 550 } |
| 720 | 551 |
| 721 /* ------------------------------------------------------------ */ | 552 @Override |
| 722 /* | |
| 723 * @see javax.servlet.ServletRequest#getReader() | |
| 724 */ | |
| 725 public BufferedReader getReader() throws IOException | 553 public BufferedReader getReader() throws IOException |
| 726 { | 554 { |
| 727 if (_inputState != __NONE && _inputState != __READER) | 555 if (_inputState != __NONE && _inputState != __READER) |
| 728 throw new IllegalStateException("STREAMED"); | 556 throw new IllegalStateException("STREAMED"); |
| 729 | 557 |
| 755 public String getRealPath(String path) | 583 public String getRealPath(String path) |
| 756 { | 584 { |
| 757 return null; | 585 return null; |
| 758 } | 586 } |
| 759 | 587 |
| 760 /* ------------------------------------------------------------ */ | 588 @Override |
| 761 /* | |
| 762 * @see javax.servlet.ServletRequest#getRemoteAddr() | |
| 763 */ | |
| 764 public String getRemoteAddr() | 589 public String getRemoteAddr() |
| 765 { | 590 { |
| 766 if (_remoteAddr != null) | 591 return _endp.getRemoteAddr(); |
| 767 return _remoteAddr; | 592 } |
| 768 return _endp == null?null:_endp.getRemoteAddr(); | 593 |
| 769 } | 594 @Override |
| 770 | |
| 771 /* ------------------------------------------------------------ */ | |
| 772 /* | |
| 773 * @see javax.servlet.ServletRequest#getRemoteHost() | |
| 774 */ | |
| 775 public String getRemoteHost() | 595 public String getRemoteHost() |
| 776 { | 596 { |
| 777 return getRemoteAddr(); | 597 return getRemoteAddr(); |
| 778 } | 598 } |
| 779 | 599 |
| 780 /* ------------------------------------------------------------ */ | 600 @Override |
| 781 /* | |
| 782 * @see javax.servlet.ServletRequest#getRemotePort() | |
| 783 */ | |
| 784 public int getRemotePort() | 601 public int getRemotePort() |
| 785 { | 602 { |
| 786 return _endp == null?0:_endp.getRemotePort(); | 603 return _endp.getRemotePort(); |
| 787 } | 604 } |
| 788 | 605 |
| 789 /* ------------------------------------------------------------ */ | 606 @Override |
| 790 /* | |
| 791 * @see javax.servlet.http.HttpServletRequest#getRemoteUser() | |
| 792 */ | |
| 793 public String getRemoteUser() | 607 public String getRemoteUser() |
| 794 { | 608 { |
| 795 Principal p = getUserPrincipal(); | 609 return null; |
| 796 if (p == null) | |
| 797 return null; | |
| 798 return p.getName(); | |
| 799 } | 610 } |
| 800 | 611 |
| 801 @Override | 612 @Override |
| 802 public RequestDispatcher getRequestDispatcher(String path) | 613 public RequestDispatcher getRequestDispatcher(String path) |
| 803 { | 614 { |
| 804 throw new UnsupportedOperationException(); | 615 throw new UnsupportedOperationException(); |
| 805 } | 616 } |
| 806 | 617 |
| 807 /* ------------------------------------------------------------ */ | 618 @Override |
| 808 /* | |
| 809 * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId() | |
| 810 */ | |
| 811 public String getRequestedSessionId() | 619 public String getRequestedSessionId() |
| 812 { | 620 { |
| 813 throw new UnsupportedOperationException(); | 621 throw new UnsupportedOperationException(); |
| 814 } | 622 } |
| 815 | 623 |
| 816 /* ------------------------------------------------------------ */ | 624 @Override |
| 817 /* | |
| 818 * @see javax.servlet.http.HttpServletRequest#getRequestURI() | |
| 819 */ | |
| 820 public String getRequestURI() | 625 public String getRequestURI() |
| 821 { | 626 { |
| 822 if (_requestURI == null && _uri != null) | 627 if (_requestURI == null && _uri != null) |
| 823 _requestURI = _uri.getPathAndParam(); | 628 _requestURI = _uri.getPathAndParam(); |
| 824 return _requestURI; | 629 return _requestURI; |
| 825 } | 630 } |
| 826 | 631 |
| 827 /* ------------------------------------------------------------ */ | 632 @Override |
| 828 /* | |
| 829 * @see javax.servlet.http.HttpServletRequest#getRequestURL() | |
| 830 */ | |
| 831 public StringBuffer getRequestURL() | 633 public StringBuffer getRequestURL() |
| 832 { | 634 { |
| 833 final StringBuffer url = new StringBuffer(48); | 635 final StringBuffer url = new StringBuffer(48); |
| 834 synchronized (url) | 636 synchronized (url) |
| 835 { | 637 { |
| 846 } | 648 } |
| 847 | 649 |
| 848 url.append(getRequestURI()); | 650 url.append(getRequestURI()); |
| 849 return url; | 651 return url; |
| 850 } | 652 } |
| 851 } | |
| 852 | |
| 853 /* ------------------------------------------------------------ */ | |
| 854 public Response getResponse() | |
| 855 { | |
| 856 return _connection._response; | |
| 857 } | 653 } |
| 858 | 654 |
| 859 /* ------------------------------------------------------------ */ | 655 /* ------------------------------------------------------------ */ |
| 860 /** | 656 /** |
| 861 * Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and, but it does not include a | 657 * Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and, but it does not include a |
| 883 url.append(port); | 679 url.append(port); |
| 884 } | 680 } |
| 885 return url; | 681 return url; |
| 886 } | 682 } |
| 887 | 683 |
| 888 /* ------------------------------------------------------------ */ | 684 @Override |
| 889 /* | |
| 890 * @see javax.servlet.ServletRequest#getScheme() | |
| 891 */ | |
| 892 public String getScheme() | 685 public String getScheme() |
| 893 { | 686 { |
| 894 return _scheme; | 687 return _scheme; |
| 895 } | 688 } |
| 896 | 689 |
| 897 /* ------------------------------------------------------------ */ | 690 @Override |
| 898 /* | |
| 899 * @see javax.servlet.ServletRequest#getServerName() | |
| 900 */ | |
| 901 public String getServerName() | 691 public String getServerName() |
| 902 { | 692 { |
| 903 // Return already determined host | 693 // Return already determined host |
| 904 if (_serverName != null) | 694 if (_serverName != null) |
| 905 return _serverName; | 695 return _serverName; |
| 933 } | 723 } |
| 934 catch (NumberFormatException e) | 724 catch (NumberFormatException e) |
| 935 { | 725 { |
| 936 try | 726 try |
| 937 { | 727 { |
| 938 if (_connection != null) | 728 _connection._generator.sendError(HttpStatus.BAD_REQUEST_400,"Bad Host header",null,true); |
| 939 _connection._generator.sendError(HttpStatus.BAD_REQUEST_400,"Bad Host header",null,true); | |
| 940 } | 729 } |
| 941 catch (IOException e1) | 730 catch (IOException e1) |
| 942 { | 731 { |
| 943 throw new RuntimeException(e1); | 732 throw new RuntimeException(e1); |
| 944 } | 733 } |
| 954 | 743 |
| 955 return _serverName; | 744 return _serverName; |
| 956 } | 745 } |
| 957 | 746 |
| 958 // Return host from connection | 747 // Return host from connection |
| 959 if (_connection != null) | 748 _serverName = getLocalName(); |
| 960 { | 749 _port = getLocalPort(); |
| 961 _serverName = getLocalName(); | 750 if (_serverName != null && !StringUtil.ALL_INTERFACES.equals(_serverName)) |
| 962 _port = getLocalPort(); | 751 return _serverName; |
| 963 if (_serverName != null && !StringUtil.ALL_INTERFACES.equals(_serverName)) | |
| 964 return _serverName; | |
| 965 } | |
| 966 | 752 |
| 967 // Return the local host | 753 // Return the local host |
| 968 try | 754 try |
| 969 { | 755 { |
| 970 _serverName = InetAddress.getLocalHost().getHostAddress(); | 756 _serverName = InetAddress.getLocalHost().getHostAddress(); |
| 974 LOG.trace("",e); | 760 LOG.trace("",e); |
| 975 } | 761 } |
| 976 return _serverName; | 762 return _serverName; |
| 977 } | 763 } |
| 978 | 764 |
| 979 /* ------------------------------------------------------------ */ | 765 @Override |
| 980 /* | |
| 981 * @see javax.servlet.ServletRequest#getServerPort() | |
| 982 */ | |
| 983 public int getServerPort() | 766 public int getServerPort() |
| 984 { | 767 { |
| 985 if (_port <= 0) | 768 if (_port <= 0) |
| 986 { | 769 { |
| 987 if (_serverName == null) | 770 if (_serverName == null) |
| 990 if (_port <= 0) | 773 if (_port <= 0) |
| 991 { | 774 { |
| 992 if (_serverName != null && _uri != null) | 775 if (_serverName != null && _uri != null) |
| 993 _port = _uri.getPort(); | 776 _port = _uri.getPort(); |
| 994 else | 777 else |
| 995 _port = _endp == null?0:_endp.getLocalPort(); | 778 _port = _endp.getLocalPort(); |
| 996 } | 779 } |
| 997 } | 780 } |
| 998 | 781 |
| 999 if (_port <= 0) | 782 if (_port <= 0) |
| 1000 { | 783 { |
| 1009 public ServletContext getServletContext() | 792 public ServletContext getServletContext() |
| 1010 { | 793 { |
| 1011 throw new UnsupportedOperationException(); | 794 throw new UnsupportedOperationException(); |
| 1012 } | 795 } |
| 1013 | 796 |
| 1014 /* ------------------------------------------------------------ */ | 797 @Override |
| 1015 /* | |
| 1016 * @see javax.servlet.http.HttpServletRequest#getServletPath() | |
| 1017 */ | |
| 1018 public String getServletPath() | 798 public String getServletPath() |
| 1019 { | 799 { |
| 1020 if (_servletPath == null) | 800 throw new UnsupportedOperationException(); |
| 1021 _servletPath = ""; | 801 } |
| 1022 return _servletPath; | 802 |
| 1023 } | 803 @Override |
| 1024 | |
| 1025 /* ------------------------------------------------------------ */ | |
| 1026 public ServletResponse getServletResponse() | |
| 1027 { | |
| 1028 return _connection.getResponse(); | |
| 1029 } | |
| 1030 | |
| 1031 /* ------------------------------------------------------------ */ | |
| 1032 /* | |
| 1033 * @see javax.servlet.http.HttpServletRequest#getSession() | |
| 1034 */ | |
| 1035 public HttpSession getSession() | 804 public HttpSession getSession() |
| 1036 { | 805 { |
| 1037 return getSession(true); | 806 throw new UnsupportedOperationException(); |
| 1038 } | 807 } |
| 1039 | 808 |
| 1040 /* ------------------------------------------------------------ */ | 809 @Override |
| 1041 /* | |
| 1042 * @see javax.servlet.http.HttpServletRequest#getSession(boolean) | |
| 1043 */ | |
| 1044 public HttpSession getSession(boolean create) | 810 public HttpSession getSession(boolean create) |
| 1045 { | 811 { |
| 1046 throw new UnsupportedOperationException(); | 812 throw new UnsupportedOperationException(); |
| 1047 } | 813 } |
| 1048 | 814 |
| 1057 return _timeStamp; | 823 return _timeStamp; |
| 1058 } | 824 } |
| 1059 | 825 |
| 1060 /* ------------------------------------------------------------ */ | 826 /* ------------------------------------------------------------ */ |
| 1061 /** | 827 /** |
| 1062 * Get Request TimeStamp | |
| 1063 * | |
| 1064 * @return The time that the request was received. | |
| 1065 */ | |
| 1066 public Buffer getTimeStampBuffer() | |
| 1067 { | |
| 1068 if (_timeStampBuffer == null && _timeStamp > 0) | |
| 1069 _timeStampBuffer = formatBuffer(_timeStamp); | |
| 1070 return _timeStampBuffer; | |
| 1071 } | |
| 1072 | |
| 1073 /* ------------------------------------------------------------ */ | |
| 1074 /** | |
| 1075 * @return Returns the uri. | 828 * @return Returns the uri. |
| 1076 */ | 829 */ |
| 1077 public HttpURI getUri() | 830 public HttpURI getUri() |
| 1078 { | 831 { |
| 1079 return _uri; | 832 return _uri; |
| 1080 } | 833 } |
| 1081 | 834 |
| 1082 /* ------------------------------------------------------------ */ | 835 @Override |
| 1083 /* | |
| 1084 * @see javax.servlet.http.HttpServletRequest#getUserPrincipal() | |
| 1085 */ | |
| 1086 public Principal getUserPrincipal() | 836 public Principal getUserPrincipal() |
| 1087 { | 837 { |
| 1088 return null; | 838 return null; |
| 1089 } | 839 } |
| 1090 | 840 |
| 1091 /* ------------------------------------------------------------ */ | |
| 1092 /** | |
| 1093 * Get timestamp of the request dispatch | |
| 1094 * | |
| 1095 * @return timestamp | |
| 1096 */ | |
| 1097 public long getDispatchTime() | |
| 1098 { | |
| 1099 return _dispatchTime; | |
| 1100 } | |
| 1101 | |
| 1102 /* ------------------------------------------------------------ */ | |
| 1103 public boolean isHandled() | 841 public boolean isHandled() |
| 1104 { | 842 { |
| 1105 return _handled; | 843 return _handled; |
| 1106 } | 844 } |
| 1107 | 845 |
| 846 @Override | |
| 1108 public boolean isAsyncStarted() | 847 public boolean isAsyncStarted() |
| 1109 { | 848 { |
| 1110 return false; | 849 return false; |
| 1111 } | 850 } |
| 1112 | 851 |
| 1113 | 852 @Override |
| 1114 public boolean isAsyncSupported() | 853 public boolean isAsyncSupported() |
| 1115 { | 854 { |
| 1116 return false; | 855 return false; |
| 1117 } | 856 } |
| 1118 | 857 |
| 1119 /* ------------------------------------------------------------ */ | 858 @Override |
| 1120 /* | |
| 1121 * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromCookie() | |
| 1122 */ | |
| 1123 public boolean isRequestedSessionIdFromCookie() | 859 public boolean isRequestedSessionIdFromCookie() |
| 1124 { | 860 { |
| 1125 throw new UnsupportedOperationException(); | 861 throw new UnsupportedOperationException(); |
| 1126 } | 862 } |
| 1127 | 863 |
| 1128 /* ------------------------------------------------------------ */ | 864 @Override |
| 1129 /* | |
| 1130 * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromUrl() | |
| 1131 */ | |
| 1132 public boolean isRequestedSessionIdFromUrl() | 865 public boolean isRequestedSessionIdFromUrl() |
| 1133 { | 866 { |
| 1134 throw new UnsupportedOperationException(); | 867 throw new UnsupportedOperationException(); |
| 1135 } | 868 } |
| 1136 | 869 |
| 1137 /* ------------------------------------------------------------ */ | 870 @Override |
| 1138 /* | |
| 1139 * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromURL() | |
| 1140 */ | |
| 1141 public boolean isRequestedSessionIdFromURL() | 871 public boolean isRequestedSessionIdFromURL() |
| 1142 { | 872 { |
| 1143 throw new UnsupportedOperationException(); | 873 throw new UnsupportedOperationException(); |
| 1144 } | 874 } |
| 1145 | 875 |
| 1146 /* ------------------------------------------------------------ */ | 876 @Override |
| 1147 /* | |
| 1148 * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid() | |
| 1149 */ | |
| 1150 public boolean isRequestedSessionIdValid() | 877 public boolean isRequestedSessionIdValid() |
| 1151 { | 878 { |
| 1152 throw new UnsupportedOperationException(); | 879 throw new UnsupportedOperationException(); |
| 1153 } | 880 } |
| 1154 | 881 |
| 1155 /* ------------------------------------------------------------ */ | 882 @Override |
| 1156 /* | |
| 1157 * @see javax.servlet.ServletRequest#isSecure() | |
| 1158 */ | |
| 1159 public boolean isSecure() | 883 public boolean isSecure() |
| 1160 { | 884 { |
| 1161 return _connection.getConnector().isConfidential(); | 885 return _connection.getConnector().isConfidential(); |
| 1162 } | 886 } |
| 1163 | 887 |
| 1164 /* ------------------------------------------------------------ */ | 888 @Override |
| 1165 /* | |
| 1166 * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String) | |
| 1167 */ | |
| 1168 public boolean isUserInRole(String role) | 889 public boolean isUserInRole(String role) |
| 1169 { | 890 { |
| 1170 return false; | 891 return false; |
| 1171 } | |
| 1172 | |
| 1173 /* ------------------------------------------------------------ */ | |
| 1174 public HttpSession recoverNewSession(Object key) | |
| 1175 { | |
| 1176 throw new UnsupportedOperationException(); | |
| 1177 } | 892 } |
| 1178 | 893 |
| 1179 protected void recycle() | 894 protected void recycle() |
| 1180 { | 895 { |
| 1181 if (_inputState == __READER) | 896 if (_inputState == __READER) |
| 1209 _port = 0; | 924 _port = 0; |
| 1210 _protocol = HttpVersions.HTTP_1_1; | 925 _protocol = HttpVersions.HTTP_1_1; |
| 1211 _queryString = null; | 926 _queryString = null; |
| 1212 _requestURI = null; | 927 _requestURI = null; |
| 1213 _scheme = URIUtil.HTTP; | 928 _scheme = URIUtil.HTTP; |
| 1214 _servletPath = null; | |
| 1215 _timeStamp = 0; | 929 _timeStamp = 0; |
| 1216 _timeStampBuffer = null; | |
| 1217 _uri = null; | 930 _uri = null; |
| 1218 if (_baseParameters != null) | 931 if (_baseParameters != null) |
| 1219 _baseParameters.clear(); | 932 _baseParameters.clear(); |
| 1220 _parameters = null; | 933 _parameters = null; |
| 1221 _paramsExtracted = false; | 934 _paramsExtracted = false; |
| 1222 _inputState = __NONE; | 935 _inputState = __NONE; |
| 1223 } | 936 } |
| 1224 | 937 |
| 1225 /* ------------------------------------------------------------ */ | 938 @Override |
| 1226 /* | |
| 1227 * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String) | |
| 1228 */ | |
| 1229 public void removeAttribute(String name) | 939 public void removeAttribute(String name) |
| 1230 { | 940 { |
| 1231 if (_attributes != null) | 941 if (_attributes != null) |
| 1232 _attributes.removeAttribute(name); | 942 _attributes.removeAttribute(name); |
| 1233 } | 943 } |
| 1239 * #flushResponseBuffer} <p> if the attribute name is "org.eclipse.jetty.io.EndPoint.maxIdleTime", then the value is passed to the associated {@link | 949 * #flushResponseBuffer} <p> if the attribute name is "org.eclipse.jetty.io.EndPoint.maxIdleTime", then the value is passed to the associated {@link |
| 1240 * EndPoint#setMaxIdleTime}. | 950 * EndPoint#setMaxIdleTime}. |
| 1241 * | 951 * |
| 1242 * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object) | 952 * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object) |
| 1243 */ | 953 */ |
| 954 @Override | |
| 1244 public void setAttribute(String name, Object value) | 955 public void setAttribute(String name, Object value) |
| 1245 { | 956 { |
| 1246 if (_attributes == null) | 957 if (_attributes == null) |
| 1247 _attributes = new AttributesMap(); | 958 _attributes = new AttributesMap(); |
| 1248 _attributes.setAttribute(name,value); | 959 _attributes.setAttribute(name,value); |
| 1249 } | 960 } |
| 1250 | 961 |
| 1251 /* ------------------------------------------------------------ */ | 962 @Override |
| 1252 /* | |
| 1253 * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String) | |
| 1254 */ | |
| 1255 public void setCharacterEncoding(String encoding) throws UnsupportedEncodingException | 963 public void setCharacterEncoding(String encoding) throws UnsupportedEncodingException |
| 1256 { | 964 { |
| 1257 if (_inputState != __NONE) | 965 if (_inputState != __NONE) |
| 1258 return; | 966 return; |
| 1259 | 967 |
| 1263 if (!StringUtil.isUTF8(encoding)) | 971 if (!StringUtil.isUTF8(encoding)) |
| 1264 // noinspection ResultOfMethodCallIgnored | 972 // noinspection ResultOfMethodCallIgnored |
| 1265 "".getBytes(encoding); | 973 "".getBytes(encoding); |
| 1266 } | 974 } |
| 1267 | 975 |
| 1268 /* ------------------------------------------------------------ */ | |
| 1269 /* | |
| 1270 * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String) | |
| 1271 */ | |
| 1272 public void setCharacterEncodingUnchecked(String encoding) | 976 public void setCharacterEncodingUnchecked(String encoding) |
| 1273 { | 977 { |
| 1274 _characterEncoding = encoding; | 978 _characterEncoding = encoding; |
| 1275 } | 979 } |
| 1276 | 980 |
| 1277 /* ------------------------------------------------------------ */ | |
| 1278 // final so we can safely call this from constructor | |
| 1279 protected final void setConnection(AbstractHttpConnection connection) | |
| 1280 { | |
| 1281 _connection = connection; | |
| 1282 _endp = connection.getEndPoint(); | |
| 1283 } | |
| 1284 | |
| 1285 /* ------------------------------------------------------------ */ | |
| 1286 /* | |
| 1287 * @see javax.servlet.ServletRequest#getContentType() | |
| 1288 */ | |
| 1289 public void setContentType(String contentType) | |
| 1290 { | |
| 1291 _connection._requestFields.put(HttpHeaders.CONTENT_TYPE_BUFFER,contentType); | |
| 1292 | |
| 1293 } | |
| 1294 | |
| 1295 /* ------------------------------------------------------------ */ | |
| 1296 /** | |
| 1297 * Sets the "context path" for this request | |
| 1298 * | |
| 1299 * @see HttpServletRequest#getContextPath() | |
| 1300 */ | |
| 1301 public void setContextPath(String contextPath) | 981 public void setContextPath(String contextPath) |
| 1302 { | 982 { |
| 1303 _contextPath = contextPath; | 983 _contextPath = contextPath; |
| 1304 } | 984 } |
| 1305 | 985 |
| 1306 /* ------------------------------------------------------------ */ | 986 /* |
| 1307 /** | |
| 1308 * @param cookies | |
| 1309 * The cookies to set. | |
| 1310 */ | |
| 1311 public void setCookies(Cookie[] cookies) | 987 public void setCookies(Cookie[] cookies) |
| 1312 { | 988 { |
| 1313 if (_cookies == null) | 989 if (_cookies == null) |
| 1314 _cookies = new CookieCutter(); | 990 _cookies = new CookieCutter(); |
| 1315 _cookies.setCookies(cookies); | 991 _cookies.setCookies(cookies); |
| 1316 } | 992 } |
| 1317 | 993 */ |
| 1318 /* ------------------------------------------------------------ */ | 994 |
| 1319 public void setHandled(boolean h) | 995 public void setHandled(boolean h) |
| 1320 { | 996 { |
| 1321 _handled = h; | 997 _handled = h; |
| 1322 } | 998 } |
| 1323 | 999 |
| 1324 /* ------------------------------------------------------------ */ | |
| 1325 /** | |
| 1326 * @param method | |
| 1327 * The method to set. | |
| 1328 */ | |
| 1329 public void setMethod(String method) | 1000 public void setMethod(String method) |
| 1330 { | 1001 { |
| 1331 _method = method; | 1002 _method = method; |
| 1332 } | 1003 } |
| 1333 | 1004 |
| 1334 /* ------------------------------------------------------------ */ | 1005 private void setParameters(MultiMap<String> parameters) |
| 1335 /** | |
| 1336 * @param parameters | |
| 1337 * The parameters to set. | |
| 1338 */ | |
| 1339 public void setParameters(MultiMap<String> parameters) | |
| 1340 { | 1006 { |
| 1341 _parameters = (parameters == null)?_baseParameters:parameters; | 1007 _parameters = (parameters == null)?_baseParameters:parameters; |
| 1342 if (_paramsExtracted && _parameters == null) | 1008 if (_paramsExtracted && _parameters == null) |
| 1343 throw new IllegalStateException(); | 1009 throw new IllegalStateException(); |
| 1344 } | 1010 } |
| 1345 | 1011 |
| 1346 /* ------------------------------------------------------------ */ | |
| 1347 /** | |
| 1348 * @param pathInfo | |
| 1349 * The pathInfo to set. | |
| 1350 */ | |
| 1351 public void setPathInfo(String pathInfo) | 1012 public void setPathInfo(String pathInfo) |
| 1352 { | 1013 { |
| 1353 _pathInfo = pathInfo; | 1014 _pathInfo = pathInfo; |
| 1354 } | 1015 } |
| 1355 | 1016 |
| 1356 /* ------------------------------------------------------------ */ | |
| 1357 /** | |
| 1358 * @param protocol | |
| 1359 * The protocol to set. | |
| 1360 */ | |
| 1361 public void setProtocol(String protocol) | 1017 public void setProtocol(String protocol) |
| 1362 { | 1018 { |
| 1363 _protocol = protocol; | 1019 _protocol = protocol; |
| 1364 } | 1020 } |
| 1365 | 1021 |
| 1366 /* ------------------------------------------------------------ */ | |
| 1367 /** | |
| 1368 * @param queryString | |
| 1369 * The queryString to set. | |
| 1370 */ | |
| 1371 public void setQueryString(String queryString) | |
| 1372 { | |
| 1373 _queryString = queryString; | |
| 1374 } | |
| 1375 | |
| 1376 /* ------------------------------------------------------------ */ | |
| 1377 /** | |
| 1378 * @param addr | |
| 1379 * The address to set. | |
| 1380 */ | |
| 1381 public void setRemoteAddr(String addr) | |
| 1382 { | |
| 1383 _remoteAddr = addr; | |
| 1384 } | |
| 1385 | |
| 1386 /* ------------------------------------------------------------ */ | |
| 1387 /** | |
| 1388 * @param host | |
| 1389 * The host to set. | |
| 1390 */ | |
| 1391 public void setRemoteHost(String host) | |
| 1392 { | |
| 1393 _remoteHost = host; | |
| 1394 } | |
| 1395 | |
| 1396 /* ------------------------------------------------------------ */ | |
| 1397 /** | |
| 1398 * @param requestURI | |
| 1399 * The requestURI to set. | |
| 1400 */ | |
| 1401 public void setRequestURI(String requestURI) | 1022 public void setRequestURI(String requestURI) |
| 1402 { | 1023 { |
| 1403 _requestURI = requestURI; | 1024 _requestURI = requestURI; |
| 1404 } | 1025 } |
| 1405 | 1026 |
| 1406 /* ------------------------------------------------------------ */ | |
| 1407 /** | |
| 1408 * @param scheme | |
| 1409 * The scheme to set. | |
| 1410 */ | |
| 1411 public void setScheme(String scheme) | 1027 public void setScheme(String scheme) |
| 1412 { | 1028 { |
| 1413 _scheme = scheme; | 1029 _scheme = scheme; |
| 1414 } | 1030 } |
| 1415 | 1031 |
| 1416 /* ------------------------------------------------------------ */ | |
| 1417 /** | |
| 1418 * @param host | |
| 1419 * The host to set. | |
| 1420 */ | |
| 1421 public void setServerName(String host) | |
| 1422 { | |
| 1423 _serverName = host; | |
| 1424 } | |
| 1425 | |
| 1426 /* ------------------------------------------------------------ */ | |
| 1427 /** | |
| 1428 * @param port | |
| 1429 * The port to set. | |
| 1430 */ | |
| 1431 public void setServerPort(int port) | |
| 1432 { | |
| 1433 _port = port; | |
| 1434 } | |
| 1435 | |
| 1436 /* ------------------------------------------------------------ */ | |
| 1437 /** | |
| 1438 * @param servletPath | |
| 1439 * The servletPath to set. | |
| 1440 */ | |
| 1441 public void setServletPath(String servletPath) | |
| 1442 { | |
| 1443 _servletPath = servletPath; | |
| 1444 } | |
| 1445 | |
| 1446 /* ------------------------------------------------------------ */ | |
| 1447 public void setTimeStamp(long ts) | 1032 public void setTimeStamp(long ts) |
| 1448 { | 1033 { |
| 1449 _timeStamp = ts; | 1034 _timeStamp = ts; |
| 1450 } | 1035 } |
| 1451 | 1036 |
| 1452 /* ------------------------------------------------------------ */ | |
| 1453 /** | |
| 1454 * @param uri | |
| 1455 * The uri to set. | |
| 1456 */ | |
| 1457 public void setUri(HttpURI uri) | 1037 public void setUri(HttpURI uri) |
| 1458 { | 1038 { |
| 1459 _uri = uri; | 1039 _uri = uri; |
| 1460 } | 1040 } |
| 1461 | 1041 |
| 1462 /* ------------------------------------------------------------ */ | 1042 @Override |
| 1463 /** | |
| 1464 * Set timetstamp of request dispatch | |
| 1465 * | |
| 1466 * @param value | |
| 1467 * timestamp | |
| 1468 */ | |
| 1469 public void setDispatchTime(long value) | |
| 1470 { | |
| 1471 _dispatchTime = value; | |
| 1472 } | |
| 1473 | |
| 1474 /* ------------------------------------------------------------ */ | |
| 1475 public AsyncContext startAsync() throws IllegalStateException | 1043 public AsyncContext startAsync() throws IllegalStateException |
| 1476 { | 1044 { |
| 1477 throw new UnsupportedOperationException(); | 1045 throw new UnsupportedOperationException(); |
| 1478 } | 1046 } |
| 1479 | 1047 |
| 1480 /* ------------------------------------------------------------ */ | 1048 @Override |
| 1481 public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException | 1049 public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException |
| 1482 { | 1050 { |
| 1483 throw new UnsupportedOperationException(); | 1051 throw new UnsupportedOperationException(); |
| 1484 } | 1052 } |
| 1485 | 1053 |
| 1486 /* ------------------------------------------------------------ */ | |
| 1487 @Override | 1054 @Override |
| 1488 public String toString() | 1055 public String toString() |
| 1489 { | 1056 { |
| 1490 return (_handled?"[":"(") + getMethod() + " " + _uri + (_handled?"]@":")@") + hashCode() + " " + super.toString(); | 1057 return (_handled?"[":"(") + getMethod() + " " + _uri + (_handled?"]@":")@") + hashCode() + " " + super.toString(); |
| 1491 } | 1058 } |
| 1492 | 1059 |
| 1493 /* ------------------------------------------------------------ */ | 1060 @Override |
| 1494 public boolean authenticate(HttpServletResponse response) throws IOException, ServletException | 1061 public boolean authenticate(HttpServletResponse response) throws IOException, ServletException |
| 1495 { | 1062 { |
| 1496 throw new UnsupportedOperationException(); | 1063 throw new UnsupportedOperationException(); |
| 1497 } | 1064 } |
| 1498 | 1065 |
| 1499 /* ------------------------------------------------------------ */ | 1066 @Override |
| 1500 public Part getPart(String name) throws IOException, ServletException | 1067 public Part getPart(String name) throws IOException, ServletException |
| 1501 { | 1068 { |
| 1502 throw new UnsupportedOperationException(); | 1069 throw new UnsupportedOperationException(); |
| 1503 } | 1070 } |
| 1504 | 1071 |
| 1505 /* ------------------------------------------------------------ */ | 1072 @Override |
| 1506 public Collection<Part> getParts() throws IOException, ServletException | 1073 public Collection<Part> getParts() throws IOException, ServletException |
| 1507 { | 1074 { |
| 1508 throw new UnsupportedOperationException(); | 1075 throw new UnsupportedOperationException(); |
| 1509 } | 1076 } |
| 1510 | 1077 |
| 1511 /* ------------------------------------------------------------ */ | 1078 @Override |
| 1512 public void login(String username, String password) throws ServletException | 1079 public void login(String username, String password) throws ServletException |
| 1513 { | 1080 { |
| 1514 throw new UnsupportedOperationException(); | 1081 throw new UnsupportedOperationException(); |
| 1515 } | 1082 } |
| 1516 | 1083 |
| 1517 /* ------------------------------------------------------------ */ | 1084 @Override |
| 1518 public void logout() throws ServletException | 1085 public void logout() throws ServletException |
| 1519 { | 1086 { |
| 1520 throw new UnsupportedOperationException(); | 1087 throw new UnsupportedOperationException(); |
| 1521 } | 1088 } |
| 1522 | |
| 1523 /* ------------------------------------------------------------ */ | |
| 1524 /** | |
| 1525 * Merge in a new query string. The query string is merged with the existing parameters and {@link #setParameters(MultiMap)} and | |
| 1526 * {@link #setQueryString(String)} are called with the result. The merge is according to the rules of the servlet dispatch forward method. | |
| 1527 * | |
| 1528 * @param query | |
| 1529 * The query string to merge into the request. | |
| 1530 */ | |
| 1531 public void mergeQueryString(String query) | |
| 1532 { | |
| 1533 // extract parameters from dispatch query | |
| 1534 MultiMap<String> parameters = new MultiMap<String>(); | |
| 1535 UrlEncoded.decodeTo(query,parameters, StringUtil.__UTF8); //have to assume UTF-8 because we can't know otherwise | |
| 1536 | |
| 1537 boolean merge_old_query = false; | |
| 1538 | |
| 1539 // Have we evaluated parameters | |
| 1540 if (!_paramsExtracted) | |
| 1541 extractParameters(); | |
| 1542 | |
| 1543 // Are there any existing parameters? | |
| 1544 if (_parameters != null && _parameters.size() > 0) | |
| 1545 { | |
| 1546 // Merge parameters; new parameters of the same name take precedence. | |
| 1547 Iterator<Entry<String, Object>> iter = _parameters.entrySet().iterator(); | |
| 1548 while (iter.hasNext()) | |
| 1549 { | |
| 1550 Map.Entry<String, Object> entry = iter.next(); | |
| 1551 String name = entry.getKey(); | |
| 1552 | |
| 1553 // If the names match, we will need to remake the query string | |
| 1554 if (parameters.containsKey(name)) | |
| 1555 merge_old_query = true; | |
| 1556 | |
| 1557 // Add the old values to the new parameter map | |
| 1558 Object values = entry.getValue(); | |
| 1559 for (int i = 0; i < LazyList.size(values); i++) | |
| 1560 parameters.add(name,LazyList.get(values,i)); | |
| 1561 } | |
| 1562 } | |
| 1563 | |
| 1564 if (_queryString != null && _queryString.length() > 0) | |
| 1565 { | |
| 1566 if (merge_old_query) | |
| 1567 { | |
| 1568 StringBuilder overridden_query_string = new StringBuilder(); | |
| 1569 MultiMap<String> overridden_old_query = new MultiMap<String>(); | |
| 1570 UrlEncoded.decodeTo(_queryString,overridden_old_query,null);//decode using any queryencoding set for the request | |
| 1571 | |
| 1572 | |
| 1573 MultiMap<String> overridden_new_query = new MultiMap<String>(); | |
| 1574 UrlEncoded.decodeTo(query,overridden_new_query,StringUtil.__UTF8); //have to assume utf8 as we cannot know otherwise | |
| 1575 | |
| 1576 Iterator<Entry<String, Object>> iter = overridden_old_query.entrySet().iterator(); | |
| 1577 while (iter.hasNext()) | |
| 1578 { | |
| 1579 Map.Entry<String, Object> entry = iter.next(); | |
| 1580 String name = entry.getKey(); | |
| 1581 if (!overridden_new_query.containsKey(name)) | |
| 1582 { | |
| 1583 Object values = entry.getValue(); | |
| 1584 for (int i = 0; i < LazyList.size(values); i++) | |
| 1585 { | |
| 1586 overridden_query_string.append("&").append(name).append("=").append((Object)LazyList.get(values,i)); | |
| 1587 } | |
| 1588 } | |
| 1589 } | |
| 1590 | |
| 1591 query = query + overridden_query_string; | |
| 1592 } | |
| 1593 else | |
| 1594 { | |
| 1595 query = query + "&" + _queryString; | |
| 1596 } | |
| 1597 } | |
| 1598 | |
| 1599 setParameters(parameters); | |
| 1600 setQueryString(query); | |
| 1601 } | |
| 1602 | |
| 1603 | |
| 1604 private static Buffer _buffer; | |
| 1605 private static String _last; | |
| 1606 private static final DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US); | |
| 1607 static { | |
| 1608 dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); | |
| 1609 } | |
| 1610 | |
| 1611 private static Buffer formatBuffer(long date) { | |
| 1612 synchronized(dateFormat) { | |
| 1613 String d = dateFormat.format(date); | |
| 1614 if (d==_last) | |
| 1615 return _buffer; | |
| 1616 _last=d; | |
| 1617 _buffer=new ByteArrayBuffer(d); | |
| 1618 return _buffer; | |
| 1619 } | |
| 1620 } | |
| 1621 | 1089 |
| 1622 } | 1090 } |
