日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

avro java_avro序列化框架实践(一)根据schema文件反向生成java类

發布時間:2024/1/1 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 avro java_avro序列化框架实践(一)根据schema文件反向生成java类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:avro序列化框架實踐(一)根據schema文件反向生成java類

avro是一款序列化框架,定義schema文件,可以生成java類,然后配合就可以序列化、反序列化對象。

定義user.avsc

{"namespace": "example.avro",

"type": "record",

"name": "User",

"fields": [

{"name": "name", "type": "string"},

{"name": "favorite_number", "type": ["int", "null"]},

{"name": "favorite_color", "type": ["string", "null"]}

]

}

執行命令

java -jar avro-tools-1.8.2.jar compile schema user.avsc .

產生的User類

exampleavroUser.java

/**

* Autogenerated by Avro

*

* DO NOT EDIT DIRECTLY

*/

package example.avro;

import org.apache.avro.specific.SpecificData;

import org.apache.avro.message.BinaryMessageEncoder;

import org.apache.avro.message.BinaryMessageDecoder;

import org.apache.avro.message.SchemaStore;

@SuppressWarnings("all")

@org.apache.avro.specific.AvroGenerated

public class User extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {

private static final long serialVersionUID = -3588479540582100558L;

public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{"type":"record","name":"User","namespace":"example.avro","fields":[{"name":"name","type":"string"},{"name":"favorite_number","type":["int","null"]},{"name":"favorite_color","type":["string","null"]}]}");

public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }

private static SpecificData MODEL$ = new SpecificData();

private static final BinaryMessageEncoder ENCODER =

new BinaryMessageEncoder(MODEL$, SCHEMA$);

private static final BinaryMessageDecoder DECODER =

new BinaryMessageDecoder(MODEL$, SCHEMA$);

/**

* Return the BinaryMessageDecoder instance used by this class.

*/

public static BinaryMessageDecoder getDecoder() {

return DECODER;

}

/**

* Create a new BinaryMessageDecoder instance for this class that uses the specified {@link SchemaStore}.

* @param resolver a {@link SchemaStore} used to find schemas by fingerprint

*/

public static BinaryMessageDecoder createDecoder(SchemaStore resolver) {

return new BinaryMessageDecoder(MODEL$, SCHEMA$, resolver);

}

/** Serializes this User to a ByteBuffer. */

public java.nio.ByteBuffer toByteBuffer() throws java.io.IOException {

return ENCODER.encode(this);

}

/** Deserializes a User from a ByteBuffer. */

public static User fromByteBuffer(

java.nio.ByteBuffer b) throws java.io.IOException {

return DECODER.decode(b);

}

@Deprecated public java.lang.CharSequence name;

@Deprecated public java.lang.Integer favorite_number;

@Deprecated public java.lang.CharSequence favorite_color;

/**

* Default constructor. Note that this does not initialize fields

* to their default values from the schema. If that is desired then

* one should use newBuilder().

*/

public User() {}

/**

* All-args constructor.

* @param name The new value for name

* @param favorite_number The new value for favorite_number

* @param favorite_color The new value for favorite_color

*/

public User(java.lang.CharSequence name, java.lang.Integer favorite_number, java.lang.CharSequence favorite_color) {

this.name = name;

this.favorite_number = favorite_number;

this.favorite_color = favorite_color;

}

public org.apache.avro.Schema getSchema() { return SCHEMA$; }

// Used by DatumWriter. Applications should not call.

public java.lang.Object get(int field$) {

switch (field$) {

case 0: return name;

case 1: return favorite_number;

case 2: return favorite_color;

default: throw new org.apache.avro.AvroRuntimeException("Bad index");

}

}

// Used by DatumReader. Applications should not call.

@SuppressWarnings(value="unchecked")

public void put(int field$, java.lang.Object value$) {

switch (field$) {

case 0: name = (java.lang.CharSequence)value$; break;

case 1: favorite_number = (java.lang.Integer)value$; break;

case 2: favorite_color = (java.lang.CharSequence)value$; break;

default: throw new org.apache.avro.AvroRuntimeException("Bad index");

}

}

/**

* Gets the value of the 'name' field.

* @return The value of the 'name' field.

*/

public java.lang.CharSequence getName() {

return name;

}

/**

* Sets the value of the 'name' field.

* @param value the value to set.

*/

public void setName(java.lang.CharSequence value) {

this.name = value;

}

/**

* Gets the value of the 'favorite_number' field.

* @return The value of the 'favorite_number' field.

*/

public java.lang.Integer getFavoriteNumber() {

return favorite_number;

}

/**

* Sets the value of the 'favorite_number' field.

* @param value the value to set.

*/

public void setFavoriteNumber(java.lang.Integer value) {

this.favorite_number = value;

}

/**

* Gets the value of the 'favorite_color' field.

* @return The value of the 'favorite_color' field.

*/

public java.lang.CharSequence getFavoriteColor() {

return favorite_color;

}

/**

* Sets the value of the 'favorite_color' field.

* @param value the value to set.

*/

public void setFavoriteColor(java.lang.CharSequence value) {

this.favorite_color = value;

}

/**

* Creates a new User RecordBuilder.

* @return A new User RecordBuilder

*/

public static example.avro.User.Builder newBuilder() {

return new example.avro.User.Builder();

}

/**

* Creates a new User RecordBuilder by copying an existing Builder.

* @param other The existing builder to copy.

* @return A new User RecordBuilder

*/

public static example.avro.User.Builder newBuilder(example.avro.User.Builder other) {

return new example.avro.User.Builder(other);

}

/**

* Creates a new User RecordBuilder by copying an existing User instance.

* @param other The existing instance to copy.

* @return A new User RecordBuilder

*/

public static example.avro.User.Builder newBuilder(example.avro.User other) {

return new example.avro.User.Builder(other);

}

/**

* RecordBuilder for User instances.

*/

public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase

implements org.apache.avro.data.RecordBuilder {

private java.lang.CharSequence name;

private java.lang.Integer favorite_number;

private java.lang.CharSequence favorite_color;

/** Creates a new Builder */

private Builder() {

super(SCHEMA$);

}

/**

* Creates a Builder by copying an existing Builder.

* @param other The existing Builder to copy.

*/

private Builder(example.avro.User.Builder other) {

super(other);

if (isValidValue(fields()[0], other.name)) {

this.name = data().deepCopy(fields()[0].schema(), other.name);

}

if (isValidValue(fields()[1], other.favorite_number)) {

this.favorite_number = data().deepCopy(fields()[1].schema(), other.favorite_number);

}

if (isValidValue(fields()[2], other.favorite_color)) {

this.favorite_color = data().deepCopy(fields()[2].schema(), other.favorite_color);

}

}

/**

* Creates a Builder by copying an existing User instance

* @param other The existing instance to copy.

*/

private Builder(example.avro.User other) {

super(SCHEMA$);

if (isValidValue(fields()[0], other.name)) {

this.name = data().deepCopy(fields()[0].schema(), other.name);

}

if (isValidValue(fields()[1], other.favorite_number)) {

this.favorite_number = data().deepCopy(fields()[1].schema(), other.favorite_number);

}

if (isValidValue(fields()[2], other.favorite_color)) {

this.favorite_color = data().deepCopy(fields()[2].schema(), other.favorite_color);

}

}

/**

* Gets the value of the 'name' field.

* @return The value.

*/

public java.lang.CharSequence getName() {

return name;

}

/**

* Sets the value of the 'name' field.

* @param value The value of 'name'.

* @return This builder.

*/

public example.avro.User.Builder setName(java.lang.CharSequence value) {

validate(fields()[0], value);

this.name = value;

return this;

}

/**

* Checks whether the 'name' field has been set.

* @return True if the 'name' field has been set, false otherwise.

*/

public boolean hasName() {

return fieldSetFlags()[0];

}

/**

* Clears the value of the 'name' field.

* @return This builder.

*/

public example.avro.User.Builder clearName() {

name = null;

fieldSetFlags()[0] = false;

return this;

}

/**

* Gets the value of the 'favorite_number' field.

* @return The value.

*/

public java.lang.Integer getFavoriteNumber() {

return favorite_number;

}

/**

* Sets the value of the 'favorite_number' field.

* @param value The value of 'favorite_number'.

* @return This builder.

*/

public example.avro.User.Builder setFavoriteNumber(java.lang.Integer value) {

validate(fields()[1], value);

this.favorite_number = value;

return this;

}

/**

* Checks whether the 'favorite_number' field has been set.

* @return True if the 'favorite_number' field has been set, false otherwise.

*/

public boolean hasFavoriteNumber() {

return fieldSetFlags()[1];

}

/**

* Clears the value of the 'favorite_number' field.

* @return This builder.

*/

public example.avro.User.Builder clearFavoriteNumber() {

favorite_number = null;

fieldSetFlags()[1] = false;

return this;

}

/**

* Gets the value of the 'favorite_color' field.

* @return The value.

*/

public java.lang.CharSequence getFavoriteColor() {

return favorite_color;

}

/**

* Sets the value of the 'favorite_color' field.

* @param value The value of 'favorite_color'.

* @return This builder.

*/

public example.avro.User.Builder setFavoriteColor(java.lang.CharSequence value) {

validate(fields()[2], value);

this.favorite_color = value;

return this;

}

/**

* Checks whether the 'favorite_color' field has been set.

* @return True if the 'favorite_color' field has been set, false otherwise.

*/

public boolean hasFavoriteColor() {

return fieldSetFlags()[2];

}

/**

* Clears the value of the 'favorite_color' field.

* @return This builder.

*/

public example.avro.User.Builder clearFavoriteColor() {

favorite_color = null;

fieldSetFlags()[2] = false;

return this;

}

@Override

@SuppressWarnings("unchecked")

public User build() {

try {

User record = new User();

record.name = fieldSetFlags()[0] ? this.name : (java.lang.CharSequence) defaultValue(fields()[0]);

record.favorite_number = fieldSetFlags()[1] ? this.favorite_number : (java.lang.Integer) defaultValue(fields()[1]);

record.favorite_color = fieldSetFlags()[2] ? this.favorite_color : (java.lang.CharSequence) defaultValue(fields()[2]);

return record;

} catch (java.lang.Exception e) {

throw new org.apache.avro.AvroRuntimeException(e);

}

}

}

@SuppressWarnings("unchecked")

private static final org.apache.avro.io.DatumWriter

WRITER$ = (org.apache.avro.io.DatumWriter)MODEL$.createDatumWriter(SCHEMA$);

@Override public void writeExternal(java.io.ObjectOutput out)

throws java.io.IOException {

WRITER$.write(this, SpecificData.getEncoder(out));

}

@SuppressWarnings("unchecked")

private static final org.apache.avro.io.DatumReader

READER$ = (org.apache.avro.io.DatumReader)MODEL$.createDatumReader(SCHEMA$);

@Override public void readExternal(java.io.ObjectInput in)

throws java.io.IOException {

READER$.read(this, SpecificData.getDecoder(in));

}

}

---------------------

作者:pangPython

來源:CSDN

原文:https://blog.csdn.net/u012995856/article/details/84112338

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的avro java_avro序列化框架实践(一)根据schema文件反向生成java类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。