提交 7d1c6ee4 编写于 作者: M Matteo Merli 提交者: xiaolong.ran

Fixed StringSchema static initialization (#5445)


(cherry picked from commit ddf5429e)
上级 c7fcf8a6
......@@ -34,10 +34,22 @@ import java.nio.charset.StandardCharsets;
*/
public class StringSchema implements Schema<String> {
static final String CHARSET_KEY = "__charset";
static final String CHARSET_KEY;
public static StringSchema utf8() {
return UTF8;
private static final SchemaInfo DEFAULT_SCHEMA_INFO;
private static final Charset DEFAULT_CHARSET;
private static final StringSchema UTF8;
static {
// Ensure the ordering of the static initialization
CHARSET_KEY = "__charset";
DEFAULT_CHARSET = StandardCharsets.UTF_8;
DEFAULT_SCHEMA_INFO = new SchemaInfo()
.setName("String")
.setType(SchemaType.STRING)
.setSchema(new byte[0]);
UTF8 = new StringSchema(StandardCharsets.UTF_8);
}
public static StringSchema fromSchemaInfo(SchemaInfo schemaInfo) {
......@@ -50,14 +62,10 @@ public class StringSchema implements Schema<String> {
}
}
private static final SchemaInfo DEFAULT_SCHEMA_INFO = new SchemaInfo()
.setName("String")
.setType(SchemaType.STRING)
.setSchema(new byte[0]);
private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
public static StringSchema utf8() {
return UTF8;
}
// make sure other static fields are initialized before this field
private static final StringSchema UTF8 = new StringSchema(StandardCharsets.UTF_8);
private final Charset charset;
private final SchemaInfo schemaInfo;
......@@ -71,10 +79,10 @@ public class StringSchema implements Schema<String> {
Map<String, String> properties = new HashMap<>();
properties.put(CHARSET_KEY, charset.name());
this.schemaInfo = new SchemaInfo()
.setName(DEFAULT_SCHEMA_INFO.getName())
.setType(SchemaType.STRING)
.setSchema(DEFAULT_SCHEMA_INFO.getSchema())
.setProperties(properties);
.setName(DEFAULT_SCHEMA_INFO.getName())
.setType(SchemaType.STRING)
.setSchema(DEFAULT_SCHEMA_INFO.getSchema())
.setProperties(properties);
}
public byte[] encode(String message) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册