1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package io.netty.handler.codec;
16
17 import io.netty.util.AsciiString;
18 import io.netty.util.internal.PlatformDependent;
19
20 import java.text.ParseException;
21 import java.util.Date;
22
23
24
25
26 public class CharSequenceValueConverter implements ValueConverter<CharSequence> {
27 public static final CharSequenceValueConverter INSTANCE = new CharSequenceValueConverter();
28 private static final AsciiString TRUE_ASCII = new AsciiString("true");
29
30 @Override
31 public CharSequence convertObject(Object value) {
32 if (value instanceof CharSequence) {
33 return (CharSequence) value;
34 }
35 return value.toString();
36 }
37
38 @Override
39 public CharSequence convertInt(int value) {
40 return String.valueOf(value);
41 }
42
43 @Override
44 public CharSequence convertLong(long value) {
45 return String.valueOf(value);
46 }
47
48 @Override
49 public CharSequence convertDouble(double value) {
50 return String.valueOf(value);
51 }
52
53 @Override
54 public CharSequence convertChar(char value) {
55 return String.valueOf(value);
56 }
57
58 @Override
59 public CharSequence convertBoolean(boolean value) {
60 return String.valueOf(value);
61 }
62
63 @Override
64 public CharSequence convertFloat(float value) {
65 return String.valueOf(value);
66 }
67
68 @Override
69 public boolean convertToBoolean(CharSequence value) {
70 return AsciiString.contentEqualsIgnoreCase(value, TRUE_ASCII);
71 }
72
73 @Override
74 public CharSequence convertByte(byte value) {
75 return String.valueOf(value);
76 }
77
78 @Override
79 public byte convertToByte(CharSequence value) {
80 if (value instanceof AsciiString && value.length() == 1) {
81 return ((AsciiString) value).byteAt(0);
82 }
83 return Byte.parseByte(value.toString());
84 }
85
86 @Override
87 public char convertToChar(CharSequence value) {
88 return value.charAt(0);
89 }
90
91 @Override
92 public CharSequence convertShort(short value) {
93 return String.valueOf(value);
94 }
95
96 @Override
97 public short convertToShort(CharSequence value) {
98 if (value instanceof AsciiString) {
99 return ((AsciiString) value).parseShort();
100 }
101 return Short.parseShort(value.toString());
102 }
103
104 @Override
105 public int convertToInt(CharSequence value) {
106 if (value instanceof AsciiString) {
107 return ((AsciiString) value).parseInt();
108 }
109 return Integer.parseInt(value.toString());
110 }
111
112 @Override
113 public long convertToLong(CharSequence value) {
114 if (value instanceof AsciiString) {
115 return ((AsciiString) value).parseLong();
116 }
117 return Long.parseLong(value.toString());
118 }
119
120 @Override
121 public CharSequence convertTimeMillis(long value) {
122 return DateFormatter.format(new Date(value));
123 }
124
125 @Override
126 public long convertToTimeMillis(CharSequence value) {
127 Date date = DateFormatter.parseHttpDate(value);
128 if (date == null) {
129 PlatformDependent.throwException(new ParseException("header can't be parsed into a Date: " + value, 0));
130 return 0;
131 }
132 return date.getTime();
133 }
134
135 @Override
136 public float convertToFloat(CharSequence value) {
137 if (value instanceof AsciiString) {
138 return ((AsciiString) value).parseFloat();
139 }
140 return Float.parseFloat(value.toString());
141 }
142
143 @Override
144 public double convertToDouble(CharSequence value) {
145 if (value instanceof AsciiString) {
146 return ((AsciiString) value).parseDouble();
147 }
148 return Double.parseDouble(value.toString());
149 }
150 }