View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  
20  package org.eclipse.jetty.http;
21  
22  import static java.nio.charset.StandardCharsets.ISO_8859_1;
23  
24  import java.util.Arrays;
25  
26  
27  /* ------------------------------------------------------------ */
28  /**
29   */
30  public class Http1FieldPreEncoder implements HttpFieldPreEncoder
31  {
32      /* ------------------------------------------------------------ */
33      /**
34       * @see org.eclipse.jetty.http.HttpFieldPreEncoder#getHttpVersion()
35       */
36      @Override
37      public HttpVersion getHttpVersion()
38      {
39          return HttpVersion.HTTP_1_0;
40      }
41  
42      /* ------------------------------------------------------------ */
43      /**
44       * @see org.eclipse.jetty.http.HttpFieldPreEncoder#getEncodedField(org.eclipse.jetty.http.HttpHeader, java.lang.String, java.lang.String)
45       */
46      @Override
47      public byte[] getEncodedField(HttpHeader header, String headerString, String value)
48      {
49          if (header!=null)
50          {
51              int cbl=header.getBytesColonSpace().length;
52              byte[] bytes=Arrays.copyOf(header.getBytesColonSpace(), cbl+value.length()+2);
53              System.arraycopy(value.getBytes(ISO_8859_1),0,bytes,cbl,value.length());
54              bytes[bytes.length-2]=(byte)'\r';
55              bytes[bytes.length-1]=(byte)'\n';
56              return bytes;
57          }
58  
59          byte[] n=headerString.getBytes(ISO_8859_1);
60          byte[] v=value.getBytes(ISO_8859_1);
61          byte[] bytes=Arrays.copyOf(n,n.length+2+v.length+2);
62          bytes[n.length]=(byte)':';
63          bytes[n.length]=(byte)' ';
64          bytes[bytes.length-2]=(byte)'\r';
65          bytes[bytes.length-1]=(byte)'\n';
66  
67          return bytes;
68      }
69  }