View Javadoc

    1   //========================================================================
    2   //Copyright 2006-2007 Mort Bay Consulting Pty. Ltd.
    3   //------------------------------------------------------------------------
    4   //Licensed under the Apache License, Version 2.0 (the "License");
    5   //you may not use this file except in compliance with the License.
    6   //You may obtain a copy of the License at
    7   //http://www.apache.org/licenses/LICENSE-2.0
    8   //Unless required by applicable law or agreed to in writing, software
    9   //distributed under the License is distributed on an "AS IS" BASIS,
    10  //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  //See the License for the specific language governing permissions and
    12  //limitations under the License.
    13  //========================================================================
    14  package org.mortbay.jetty.client;
    15
    16  import java.io.IOException;
    17
    18  import org.mortbay.io.Buffer;
    19  import org.mortbay.jetty.HttpFields;
    20
    21  /**
    22   * An exchange that caches response status and fields for later use.
    23   *
    24   * @author gregw
    25   *
    26   */
    27  public class CachedExchange extends HttpExchange
    28  {
    29      int _responseStatus;
    30      HttpFields _responseFields;
    31
    32      public CachedExchange(boolean cacheFields)
    33      {
    34          if (cacheFields)
    35              _responseFields = new HttpFields();
    36      }
    37
    38      /* ------------------------------------------------------------ */
    39      public int getResponseStatus()
    40      {
    41          if (_status < HttpExchange.STATUS_PARSING_HEADERS)
    42              throw new IllegalStateException("Response not received");
    43          return _responseStatus;
    44      }
    45
    46      /* ------------------------------------------------------------ */
    47      public HttpFields getResponseFields()
    48      {
    49          if (_status < HttpExchange.STATUS_PARSING_CONTENT)
    50              throw new IllegalStateException("Headers not complete");
    51          return _responseFields;
    52      }
    53
    54      /* ------------------------------------------------------------ */
    55      protected void onResponseStatus(Buffer version, int status, Buffer reason) throws IOException
    56      {
    57          _responseStatus = status;
    58          super.onResponseStatus(version,status,reason);
    59      }
    60
    61      /* ------------------------------------------------------------ */
    62      protected void onResponseHeader(Buffer name, Buffer value) throws IOException
    63      {
    64          if (_responseFields != null)
    65              _responseFields.add(name,value);
    66          super.onResponseHeader(name,value);
    67      }
    68
    69  }