]> WPIA git - gigi.git/blob - lib/jetty/org/eclipse/jetty/util/Utf8StringBuilder.java
Merge "Update notes about password security"
[gigi.git] / lib / jetty / org / eclipse / jetty / util / Utf8StringBuilder.java
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 package org.eclipse.jetty.util;
20
21
22 /* ------------------------------------------------------------ */
23 /** UTF-8 StringBuilder.
24  *
25  * This class wraps a standard {@link java.lang.StringBuilder} and provides methods to append
26  * UTF-8 encoded bytes, that are converted into characters.
27  *
28  * This class is stateful and up to 4 calls to {@link #append(byte)} may be needed before
29  * state a character is appended to the string buffer.
30  *
31  * The UTF-8 decoding is done by this class and no additional buffers or Readers are used.
32  * The UTF-8 code was inspired by http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
33  *
34  */
35 public class Utf8StringBuilder extends Utf8Appendable
36 {
37     final StringBuilder _buffer;
38
39     public Utf8StringBuilder()
40     {
41         super(new StringBuilder());
42         _buffer=(StringBuilder)_appendable;
43     }
44
45     public Utf8StringBuilder(int capacity)
46     {
47         super(new StringBuilder(capacity));
48         _buffer=(StringBuilder)_appendable;
49     }
50
51     @Override
52     public int length()
53     {
54         return _buffer.length();
55     }
56
57     @Override
58     public void reset()
59     {
60         super.reset();
61         _buffer.setLength(0);
62     }
63
64     public StringBuilder getStringBuilder()
65     {
66         checkState();
67         return _buffer;
68     }
69
70     @Override
71     public String toString()
72     {
73         checkState();
74         return _buffer.toString();
75     }
76
77
78 }