Add Kafka Generic Consumer And Producer Classes

This commit is contained in:
Ali CANLI
2022-07-11 00:37:34 +03:00
parent a3918a8cef
commit 80bc6c6de7
22 changed files with 4151 additions and 12 deletions

View File

@@ -11,9 +11,23 @@
<artifactId>kafka-consumer</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.food.order</groupId>
<artifactId>kafka-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,9 @@
package com.food.order.system.kafka.consumer;
import org.apache.avro.specific.SpecificRecordBase;
import java.util.List;
public interface KafkaConsumer<T extends SpecificRecordBase> {
void receive(List<T> messages , List<Long> keys , List<Integer> partitions , List<Long> offSets);
}

View File

@@ -0,0 +1,60 @@
package com.food.order.system.kafka.consumer.config;
import com.food.order.kafka.config.data.KafkaConfigData;
import com.food.order.kafka.config.data.KafkaConsumerConfigData;
import lombok.RequiredArgsConstructor;
import org.apache.avro.specific.SpecificRecordBase;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.config.KafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@Configuration
@RequiredArgsConstructor
public class KafkaConsumerConfig<K extends Serializable, V extends SpecificRecordBase> {
private final KafkaConfigData kafkaConfigData;
private final KafkaConsumerConfigData kafkaConsumerConfigData;
@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaConfigData.getBootstrapServers());
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, kafkaConsumerConfigData.getKeyDeserializer());
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, kafkaConsumerConfigData.getValueDeserializer());
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, kafkaConsumerConfigData.getAutoOffsetReset());
props.put(kafkaConfigData.getSchemaRegistryUrlKey(), kafkaConfigData.getSchemaRegistryUrl());
props.put(kafkaConsumerConfigData.getSpecificAvroReaderKey(), kafkaConsumerConfigData.getSpecificAvroReader());
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, kafkaConsumerConfigData.getSessionTimeoutMs());
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, kafkaConsumerConfigData.getHeartbeatIntervalMs());
props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, kafkaConsumerConfigData.getMaxPollIntervalMs());
props.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG,
kafkaConsumerConfigData.getMaxPartitionFetchBytesDefault() *
kafkaConsumerConfigData.getMaxPartitionFetchBytesBoostFactor());
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, kafkaConsumerConfigData.getMaxPollRecords());
return props;
}
@Bean
public ConsumerFactory<K, V> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs());
}
@Bean
public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<K, V>> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<K, V> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
factory.setBatchListener(kafkaConsumerConfigData.getBatchListener());
factory.setConcurrency(kafkaConsumerConfigData.getConcurrencyLevel());
factory.setAutoStartup(kafkaConsumerConfigData.getAutoStartup());
factory.getContainerProperties().setPollTimeout(kafkaConsumerConfigData.getPollTimeoutMs());
return factory;
}
}

View File

@@ -11,9 +11,40 @@
<artifactId>kafka-model</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>${avro.version}</version>
<configuration>
<stringType>String</stringType>
<enableDecimalLogicalType>true</enableDecimalLogicalType>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
</goals>
<configuration>
<sourceDirectory>src/main/resources/avro</sourceDirectory>
<outputDirectory>src/main/java</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,13 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
@org.apache.avro.specific.AvroGenerated
public enum OrderApprovalStatus implements org.apache.avro.generic.GenericEnumSymbol<OrderApprovalStatus> {
APPROVED, REJECTED ;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"enum\",\"name\":\"OrderApprovalStatus\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"symbols\":[\"APPROVED\",\"REJECTED\"]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
public org.apache.avro.Schema getSchema() { return SCHEMA$; }
}

View File

@@ -0,0 +1,13 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
@org.apache.avro.specific.AvroGenerated
public enum PaymentOrderStatus implements org.apache.avro.generic.GenericEnumSymbol<PaymentOrderStatus> {
PENDING, CANCELLED ;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"enum\",\"name\":\"PaymentOrderStatus\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"symbols\":[\"PENDING\",\"CANCELLED\"]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
public org.apache.avro.Schema getSchema() { return SCHEMA$; }
}

View File

@@ -0,0 +1,736 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
import org.apache.avro.generic.GenericArray;
import org.apache.avro.specific.SpecificData;
import org.apache.avro.util.Utf8;
import org.apache.avro.message.BinaryMessageEncoder;
import org.apache.avro.message.BinaryMessageDecoder;
import org.apache.avro.message.SchemaStore;
@org.apache.avro.specific.AvroGenerated
public class PaymentRequestAvroModel extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
private static final long serialVersionUID = 1425163749928760031L;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"PaymentRequestAvroModel\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"fields\":[{\"name\":\"id\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"sagaId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"customerId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"orderId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"price\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":10,\"scale\":2}},{\"name\":\"createdAt\",\"type\":{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}},{\"name\":\"paymentOrderStatus\",\"type\":{\"type\":\"enum\",\"name\":\"PaymentOrderStatus\",\"symbols\":[\"PENDING\",\"CANCELLED\"]}}]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
static {
MODEL$.addLogicalTypeConversion(new org.apache.avro.data.TimeConversions.TimestampMillisConversion());
MODEL$.addLogicalTypeConversion(new org.apache.avro.Conversions.DecimalConversion());
}
private static final BinaryMessageEncoder<PaymentRequestAvroModel> ENCODER =
new BinaryMessageEncoder<PaymentRequestAvroModel>(MODEL$, SCHEMA$);
private static final BinaryMessageDecoder<PaymentRequestAvroModel> DECODER =
new BinaryMessageDecoder<PaymentRequestAvroModel>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
public static BinaryMessageEncoder<PaymentRequestAvroModel> getEncoder() {
return ENCODER;
}
/**
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
public static BinaryMessageDecoder<PaymentRequestAvroModel> 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
* @return a BinaryMessageDecoder instance for this class backed by the given SchemaStore
*/
public static BinaryMessageDecoder<PaymentRequestAvroModel> createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<PaymentRequestAvroModel>(MODEL$, SCHEMA$, resolver);
}
/**
* Serializes this PaymentRequestAvroModel to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
public java.nio.ByteBuffer toByteBuffer() throws java.io.IOException {
return ENCODER.encode(this);
}
/**
* Deserializes a PaymentRequestAvroModel from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this class
* @return a PaymentRequestAvroModel instance decoded from the given buffer
* @throws java.io.IOException if the given bytes could not be deserialized into an instance of this class
*/
public static PaymentRequestAvroModel fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String customerId;
private java.lang.String orderId;
private java.math.BigDecimal price;
private java.time.Instant createdAt;
private com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus paymentOrderStatus;
/**
* Default constructor. Note that this does not initialize fields
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
public PaymentRequestAvroModel() {}
/**
* All-args constructor.
* @param id The new value for id
* @param sagaId The new value for sagaId
* @param customerId The new value for customerId
* @param orderId The new value for orderId
* @param price The new value for price
* @param createdAt The new value for createdAt
* @param paymentOrderStatus The new value for paymentOrderStatus
*/
public PaymentRequestAvroModel(java.lang.String id, java.lang.String sagaId, java.lang.String customerId, java.lang.String orderId, java.math.BigDecimal price, java.time.Instant createdAt, com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus paymentOrderStatus) {
this.id = id;
this.sagaId = sagaId;
this.customerId = customerId;
this.orderId = orderId;
this.price = price;
this.createdAt = createdAt.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
this.paymentOrderStatus = paymentOrderStatus;
}
public org.apache.avro.specific.SpecificData getSpecificData() { return MODEL$; }
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 id;
case 1: return sagaId;
case 2: return customerId;
case 3: return orderId;
case 4: return price;
case 5: return createdAt;
case 6: return paymentOrderStatus;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
private static final org.apache.avro.Conversion<?>[] conversions =
new org.apache.avro.Conversion<?>[] {
null,
null,
null,
null,
new org.apache.avro.Conversions.DecimalConversion(),
new org.apache.avro.data.TimeConversions.TimestampMillisConversion(),
null,
null
};
@Override
public org.apache.avro.Conversion<?> getConversion(int field) {
return conversions[field];
}
// Used by DatumReader. Applications should not call.
@SuppressWarnings(value="unchecked")
public void put(int field$, java.lang.Object value$) {
switch (field$) {
case 0: id = value$ != null ? value$.toString() : null; break;
case 1: sagaId = value$ != null ? value$.toString() : null; break;
case 2: customerId = value$ != null ? value$.toString() : null; break;
case 3: orderId = value$ != null ? value$.toString() : null; break;
case 4: price = (java.math.BigDecimal)value$; break;
case 5: createdAt = (java.time.Instant)value$; break;
case 6: paymentOrderStatus = (com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus)value$; break;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
/**
* Gets the value of the 'id' field.
* @return The value of the 'id' field.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value the value to set.
*/
public void setId(java.lang.String value) {
this.id = value;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value of the 'sagaId' field.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value the value to set.
*/
public void setSagaId(java.lang.String value) {
this.sagaId = value;
}
/**
* Gets the value of the 'customerId' field.
* @return The value of the 'customerId' field.
*/
public java.lang.String getCustomerId() {
return customerId;
}
/**
* Sets the value of the 'customerId' field.
* @param value the value to set.
*/
public void setCustomerId(java.lang.String value) {
this.customerId = value;
}
/**
* Gets the value of the 'orderId' field.
* @return The value of the 'orderId' field.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value the value to set.
*/
public void setOrderId(java.lang.String value) {
this.orderId = value;
}
/**
* Gets the value of the 'price' field.
* @return The value of the 'price' field.
*/
public java.math.BigDecimal getPrice() {
return price;
}
/**
* Sets the value of the 'price' field.
* @param value the value to set.
*/
public void setPrice(java.math.BigDecimal value) {
this.price = value;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value of the 'createdAt' field.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value the value to set.
*/
public void setCreatedAt(java.time.Instant value) {
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
}
/**
* Gets the value of the 'paymentOrderStatus' field.
* @return The value of the 'paymentOrderStatus' field.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus getPaymentOrderStatus() {
return paymentOrderStatus;
}
/**
* Sets the value of the 'paymentOrderStatus' field.
* @param value the value to set.
*/
public void setPaymentOrderStatus(com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus value) {
this.paymentOrderStatus = value;
}
/**
* Creates a new PaymentRequestAvroModel RecordBuilder.
* @return A new PaymentRequestAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder newBuilder() {
return new com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder();
}
/**
* Creates a new PaymentRequestAvroModel RecordBuilder by copying an existing Builder.
* @param other The existing builder to copy.
* @return A new PaymentRequestAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder(other);
}
}
/**
* Creates a new PaymentRequestAvroModel RecordBuilder by copying an existing PaymentRequestAvroModel instance.
* @param other The existing instance to copy.
* @return A new PaymentRequestAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder(other);
}
}
/**
* RecordBuilder for PaymentRequestAvroModel instances.
*/
@org.apache.avro.specific.AvroGenerated
public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<PaymentRequestAvroModel>
implements org.apache.avro.data.RecordBuilder<PaymentRequestAvroModel> {
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String customerId;
private java.lang.String orderId;
private java.math.BigDecimal price;
private java.time.Instant createdAt;
private com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus paymentOrderStatus;
/** Creates a new Builder */
private Builder() {
super(SCHEMA$, MODEL$);
}
/**
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder other) {
super(other);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = other.fieldSetFlags()[0];
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = other.fieldSetFlags()[1];
}
if (isValidValue(fields()[2], other.customerId)) {
this.customerId = data().deepCopy(fields()[2].schema(), other.customerId);
fieldSetFlags()[2] = other.fieldSetFlags()[2];
}
if (isValidValue(fields()[3], other.orderId)) {
this.orderId = data().deepCopy(fields()[3].schema(), other.orderId);
fieldSetFlags()[3] = other.fieldSetFlags()[3];
}
if (isValidValue(fields()[4], other.price)) {
this.price = data().deepCopy(fields()[4].schema(), other.price);
fieldSetFlags()[4] = other.fieldSetFlags()[4];
}
if (isValidValue(fields()[5], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[5].schema(), other.createdAt);
fieldSetFlags()[5] = other.fieldSetFlags()[5];
}
if (isValidValue(fields()[6], other.paymentOrderStatus)) {
this.paymentOrderStatus = data().deepCopy(fields()[6].schema(), other.paymentOrderStatus);
fieldSetFlags()[6] = other.fieldSetFlags()[6];
}
}
/**
* Creates a Builder by copying an existing PaymentRequestAvroModel instance
* @param other The existing instance to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = true;
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = true;
}
if (isValidValue(fields()[2], other.customerId)) {
this.customerId = data().deepCopy(fields()[2].schema(), other.customerId);
fieldSetFlags()[2] = true;
}
if (isValidValue(fields()[3], other.orderId)) {
this.orderId = data().deepCopy(fields()[3].schema(), other.orderId);
fieldSetFlags()[3] = true;
}
if (isValidValue(fields()[4], other.price)) {
this.price = data().deepCopy(fields()[4].schema(), other.price);
fieldSetFlags()[4] = true;
}
if (isValidValue(fields()[5], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[5].schema(), other.createdAt);
fieldSetFlags()[5] = true;
}
if (isValidValue(fields()[6], other.paymentOrderStatus)) {
this.paymentOrderStatus = data().deepCopy(fields()[6].schema(), other.paymentOrderStatus);
fieldSetFlags()[6] = true;
}
}
/**
* Gets the value of the 'id' field.
* @return The value.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value The value of 'id'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setId(java.lang.String value) {
validate(fields()[0], value);
this.id = value;
fieldSetFlags()[0] = true;
return this;
}
/**
* Checks whether the 'id' field has been set.
* @return True if the 'id' field has been set, false otherwise.
*/
public boolean hasId() {
return fieldSetFlags()[0];
}
/**
* Clears the value of the 'id' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearId() {
id = null;
fieldSetFlags()[0] = false;
return this;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value The value of 'sagaId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setSagaId(java.lang.String value) {
validate(fields()[1], value);
this.sagaId = value;
fieldSetFlags()[1] = true;
return this;
}
/**
* Checks whether the 'sagaId' field has been set.
* @return True if the 'sagaId' field has been set, false otherwise.
*/
public boolean hasSagaId() {
return fieldSetFlags()[1];
}
/**
* Clears the value of the 'sagaId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearSagaId() {
sagaId = null;
fieldSetFlags()[1] = false;
return this;
}
/**
* Gets the value of the 'customerId' field.
* @return The value.
*/
public java.lang.String getCustomerId() {
return customerId;
}
/**
* Sets the value of the 'customerId' field.
* @param value The value of 'customerId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setCustomerId(java.lang.String value) {
validate(fields()[2], value);
this.customerId = value;
fieldSetFlags()[2] = true;
return this;
}
/**
* Checks whether the 'customerId' field has been set.
* @return True if the 'customerId' field has been set, false otherwise.
*/
public boolean hasCustomerId() {
return fieldSetFlags()[2];
}
/**
* Clears the value of the 'customerId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearCustomerId() {
customerId = null;
fieldSetFlags()[2] = false;
return this;
}
/**
* Gets the value of the 'orderId' field.
* @return The value.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value The value of 'orderId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setOrderId(java.lang.String value) {
validate(fields()[3], value);
this.orderId = value;
fieldSetFlags()[3] = true;
return this;
}
/**
* Checks whether the 'orderId' field has been set.
* @return True if the 'orderId' field has been set, false otherwise.
*/
public boolean hasOrderId() {
return fieldSetFlags()[3];
}
/**
* Clears the value of the 'orderId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearOrderId() {
orderId = null;
fieldSetFlags()[3] = false;
return this;
}
/**
* Gets the value of the 'price' field.
* @return The value.
*/
public java.math.BigDecimal getPrice() {
return price;
}
/**
* Sets the value of the 'price' field.
* @param value The value of 'price'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setPrice(java.math.BigDecimal value) {
validate(fields()[4], value);
this.price = value;
fieldSetFlags()[4] = true;
return this;
}
/**
* Checks whether the 'price' field has been set.
* @return True if the 'price' field has been set, false otherwise.
*/
public boolean hasPrice() {
return fieldSetFlags()[4];
}
/**
* Clears the value of the 'price' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearPrice() {
price = null;
fieldSetFlags()[4] = false;
return this;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value The value of 'createdAt'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setCreatedAt(java.time.Instant value) {
validate(fields()[5], value);
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
fieldSetFlags()[5] = true;
return this;
}
/**
* Checks whether the 'createdAt' field has been set.
* @return True if the 'createdAt' field has been set, false otherwise.
*/
public boolean hasCreatedAt() {
return fieldSetFlags()[5];
}
/**
* Clears the value of the 'createdAt' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearCreatedAt() {
fieldSetFlags()[5] = false;
return this;
}
/**
* Gets the value of the 'paymentOrderStatus' field.
* @return The value.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus getPaymentOrderStatus() {
return paymentOrderStatus;
}
/**
* Sets the value of the 'paymentOrderStatus' field.
* @param value The value of 'paymentOrderStatus'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder setPaymentOrderStatus(com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus value) {
validate(fields()[6], value);
this.paymentOrderStatus = value;
fieldSetFlags()[6] = true;
return this;
}
/**
* Checks whether the 'paymentOrderStatus' field has been set.
* @return True if the 'paymentOrderStatus' field has been set, false otherwise.
*/
public boolean hasPaymentOrderStatus() {
return fieldSetFlags()[6];
}
/**
* Clears the value of the 'paymentOrderStatus' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentRequestAvroModel.Builder clearPaymentOrderStatus() {
paymentOrderStatus = null;
fieldSetFlags()[6] = false;
return this;
}
@Override
@SuppressWarnings("unchecked")
public PaymentRequestAvroModel build() {
try {
PaymentRequestAvroModel record = new PaymentRequestAvroModel();
record.id = fieldSetFlags()[0] ? this.id : (java.lang.String) defaultValue(fields()[0]);
record.sagaId = fieldSetFlags()[1] ? this.sagaId : (java.lang.String) defaultValue(fields()[1]);
record.customerId = fieldSetFlags()[2] ? this.customerId : (java.lang.String) defaultValue(fields()[2]);
record.orderId = fieldSetFlags()[3] ? this.orderId : (java.lang.String) defaultValue(fields()[3]);
record.price = fieldSetFlags()[4] ? this.price : (java.math.BigDecimal) defaultValue(fields()[4]);
record.createdAt = fieldSetFlags()[5] ? this.createdAt : (java.time.Instant) defaultValue(fields()[5]);
record.paymentOrderStatus = fieldSetFlags()[6] ? this.paymentOrderStatus : (com.food.ordering.system.kafka.order.avro.model.PaymentOrderStatus) defaultValue(fields()[6]);
return record;
} catch (org.apache.avro.AvroMissingFieldException e) {
throw e;
} catch (java.lang.Exception e) {
throw new org.apache.avro.AvroRuntimeException(e);
}
}
}
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumWriter<PaymentRequestAvroModel>
WRITER$ = (org.apache.avro.io.DatumWriter<PaymentRequestAvroModel>)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<PaymentRequestAvroModel>
READER$ = (org.apache.avro.io.DatumReader<PaymentRequestAvroModel>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
READER$.read(this, SpecificData.getDecoder(in));
}
}

View File

@@ -0,0 +1,882 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
import org.apache.avro.generic.GenericArray;
import org.apache.avro.specific.SpecificData;
import org.apache.avro.util.Utf8;
import org.apache.avro.message.BinaryMessageEncoder;
import org.apache.avro.message.BinaryMessageDecoder;
import org.apache.avro.message.SchemaStore;
@org.apache.avro.specific.AvroGenerated
public class PaymentResponseAvroModel extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
private static final long serialVersionUID = -2126784712017759782L;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"PaymentResponseAvroModel\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"fields\":[{\"name\":\"id\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"sagaId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"paymentId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"customerId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"orderId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"price\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":10,\"scale\":2}},{\"name\":\"createdAt\",\"type\":{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}},{\"name\":\"paymentStatus\",\"type\":{\"type\":\"enum\",\"name\":\"PaymentStatus\",\"symbols\":[\"COMPLETED\",\"CANCELLED\",\"FAILED\"]}},{\"name\":\"failureMessages\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}}]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
static {
MODEL$.addLogicalTypeConversion(new org.apache.avro.data.TimeConversions.TimestampMillisConversion());
MODEL$.addLogicalTypeConversion(new org.apache.avro.Conversions.DecimalConversion());
}
private static final BinaryMessageEncoder<PaymentResponseAvroModel> ENCODER =
new BinaryMessageEncoder<PaymentResponseAvroModel>(MODEL$, SCHEMA$);
private static final BinaryMessageDecoder<PaymentResponseAvroModel> DECODER =
new BinaryMessageDecoder<PaymentResponseAvroModel>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
public static BinaryMessageEncoder<PaymentResponseAvroModel> getEncoder() {
return ENCODER;
}
/**
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
public static BinaryMessageDecoder<PaymentResponseAvroModel> 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
* @return a BinaryMessageDecoder instance for this class backed by the given SchemaStore
*/
public static BinaryMessageDecoder<PaymentResponseAvroModel> createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<PaymentResponseAvroModel>(MODEL$, SCHEMA$, resolver);
}
/**
* Serializes this PaymentResponseAvroModel to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
public java.nio.ByteBuffer toByteBuffer() throws java.io.IOException {
return ENCODER.encode(this);
}
/**
* Deserializes a PaymentResponseAvroModel from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this class
* @return a PaymentResponseAvroModel instance decoded from the given buffer
* @throws java.io.IOException if the given bytes could not be deserialized into an instance of this class
*/
public static PaymentResponseAvroModel fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String paymentId;
private java.lang.String customerId;
private java.lang.String orderId;
private java.math.BigDecimal price;
private java.time.Instant createdAt;
private com.food.ordering.system.kafka.order.avro.model.PaymentStatus paymentStatus;
private java.util.List<java.lang.String> failureMessages;
/**
* Default constructor. Note that this does not initialize fields
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
public PaymentResponseAvroModel() {}
/**
* All-args constructor.
* @param id The new value for id
* @param sagaId The new value for sagaId
* @param paymentId The new value for paymentId
* @param customerId The new value for customerId
* @param orderId The new value for orderId
* @param price The new value for price
* @param createdAt The new value for createdAt
* @param paymentStatus The new value for paymentStatus
* @param failureMessages The new value for failureMessages
*/
public PaymentResponseAvroModel(java.lang.String id, java.lang.String sagaId, java.lang.String paymentId, java.lang.String customerId, java.lang.String orderId, java.math.BigDecimal price, java.time.Instant createdAt, com.food.ordering.system.kafka.order.avro.model.PaymentStatus paymentStatus, java.util.List<java.lang.String> failureMessages) {
this.id = id;
this.sagaId = sagaId;
this.paymentId = paymentId;
this.customerId = customerId;
this.orderId = orderId;
this.price = price;
this.createdAt = createdAt.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
this.paymentStatus = paymentStatus;
this.failureMessages = failureMessages;
}
public org.apache.avro.specific.SpecificData getSpecificData() { return MODEL$; }
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 id;
case 1: return sagaId;
case 2: return paymentId;
case 3: return customerId;
case 4: return orderId;
case 5: return price;
case 6: return createdAt;
case 7: return paymentStatus;
case 8: return failureMessages;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
private static final org.apache.avro.Conversion<?>[] conversions =
new org.apache.avro.Conversion<?>[] {
null,
null,
null,
null,
null,
new org.apache.avro.Conversions.DecimalConversion(),
new org.apache.avro.data.TimeConversions.TimestampMillisConversion(),
null,
null,
null
};
@Override
public org.apache.avro.Conversion<?> getConversion(int field) {
return conversions[field];
}
// Used by DatumReader. Applications should not call.
@SuppressWarnings(value="unchecked")
public void put(int field$, java.lang.Object value$) {
switch (field$) {
case 0: id = value$ != null ? value$.toString() : null; break;
case 1: sagaId = value$ != null ? value$.toString() : null; break;
case 2: paymentId = value$ != null ? value$.toString() : null; break;
case 3: customerId = value$ != null ? value$.toString() : null; break;
case 4: orderId = value$ != null ? value$.toString() : null; break;
case 5: price = (java.math.BigDecimal)value$; break;
case 6: createdAt = (java.time.Instant)value$; break;
case 7: paymentStatus = (com.food.ordering.system.kafka.order.avro.model.PaymentStatus)value$; break;
case 8: failureMessages = (java.util.List<java.lang.String>)value$; break;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
/**
* Gets the value of the 'id' field.
* @return The value of the 'id' field.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value the value to set.
*/
public void setId(java.lang.String value) {
this.id = value;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value of the 'sagaId' field.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value the value to set.
*/
public void setSagaId(java.lang.String value) {
this.sagaId = value;
}
/**
* Gets the value of the 'paymentId' field.
* @return The value of the 'paymentId' field.
*/
public java.lang.String getPaymentId() {
return paymentId;
}
/**
* Sets the value of the 'paymentId' field.
* @param value the value to set.
*/
public void setPaymentId(java.lang.String value) {
this.paymentId = value;
}
/**
* Gets the value of the 'customerId' field.
* @return The value of the 'customerId' field.
*/
public java.lang.String getCustomerId() {
return customerId;
}
/**
* Sets the value of the 'customerId' field.
* @param value the value to set.
*/
public void setCustomerId(java.lang.String value) {
this.customerId = value;
}
/**
* Gets the value of the 'orderId' field.
* @return The value of the 'orderId' field.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value the value to set.
*/
public void setOrderId(java.lang.String value) {
this.orderId = value;
}
/**
* Gets the value of the 'price' field.
* @return The value of the 'price' field.
*/
public java.math.BigDecimal getPrice() {
return price;
}
/**
* Sets the value of the 'price' field.
* @param value the value to set.
*/
public void setPrice(java.math.BigDecimal value) {
this.price = value;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value of the 'createdAt' field.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value the value to set.
*/
public void setCreatedAt(java.time.Instant value) {
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
}
/**
* Gets the value of the 'paymentStatus' field.
* @return The value of the 'paymentStatus' field.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentStatus getPaymentStatus() {
return paymentStatus;
}
/**
* Sets the value of the 'paymentStatus' field.
* @param value the value to set.
*/
public void setPaymentStatus(com.food.ordering.system.kafka.order.avro.model.PaymentStatus value) {
this.paymentStatus = value;
}
/**
* Gets the value of the 'failureMessages' field.
* @return The value of the 'failureMessages' field.
*/
public java.util.List<java.lang.String> getFailureMessages() {
return failureMessages;
}
/**
* Sets the value of the 'failureMessages' field.
* @param value the value to set.
*/
public void setFailureMessages(java.util.List<java.lang.String> value) {
this.failureMessages = value;
}
/**
* Creates a new PaymentResponseAvroModel RecordBuilder.
* @return A new PaymentResponseAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder newBuilder() {
return new com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder();
}
/**
* Creates a new PaymentResponseAvroModel RecordBuilder by copying an existing Builder.
* @param other The existing builder to copy.
* @return A new PaymentResponseAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder(other);
}
}
/**
* Creates a new PaymentResponseAvroModel RecordBuilder by copying an existing PaymentResponseAvroModel instance.
* @param other The existing instance to copy.
* @return A new PaymentResponseAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder(other);
}
}
/**
* RecordBuilder for PaymentResponseAvroModel instances.
*/
@org.apache.avro.specific.AvroGenerated
public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<PaymentResponseAvroModel>
implements org.apache.avro.data.RecordBuilder<PaymentResponseAvroModel> {
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String paymentId;
private java.lang.String customerId;
private java.lang.String orderId;
private java.math.BigDecimal price;
private java.time.Instant createdAt;
private com.food.ordering.system.kafka.order.avro.model.PaymentStatus paymentStatus;
private java.util.List<java.lang.String> failureMessages;
/** Creates a new Builder */
private Builder() {
super(SCHEMA$, MODEL$);
}
/**
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder other) {
super(other);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = other.fieldSetFlags()[0];
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = other.fieldSetFlags()[1];
}
if (isValidValue(fields()[2], other.paymentId)) {
this.paymentId = data().deepCopy(fields()[2].schema(), other.paymentId);
fieldSetFlags()[2] = other.fieldSetFlags()[2];
}
if (isValidValue(fields()[3], other.customerId)) {
this.customerId = data().deepCopy(fields()[3].schema(), other.customerId);
fieldSetFlags()[3] = other.fieldSetFlags()[3];
}
if (isValidValue(fields()[4], other.orderId)) {
this.orderId = data().deepCopy(fields()[4].schema(), other.orderId);
fieldSetFlags()[4] = other.fieldSetFlags()[4];
}
if (isValidValue(fields()[5], other.price)) {
this.price = data().deepCopy(fields()[5].schema(), other.price);
fieldSetFlags()[5] = other.fieldSetFlags()[5];
}
if (isValidValue(fields()[6], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[6].schema(), other.createdAt);
fieldSetFlags()[6] = other.fieldSetFlags()[6];
}
if (isValidValue(fields()[7], other.paymentStatus)) {
this.paymentStatus = data().deepCopy(fields()[7].schema(), other.paymentStatus);
fieldSetFlags()[7] = other.fieldSetFlags()[7];
}
if (isValidValue(fields()[8], other.failureMessages)) {
this.failureMessages = data().deepCopy(fields()[8].schema(), other.failureMessages);
fieldSetFlags()[8] = other.fieldSetFlags()[8];
}
}
/**
* Creates a Builder by copying an existing PaymentResponseAvroModel instance
* @param other The existing instance to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = true;
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = true;
}
if (isValidValue(fields()[2], other.paymentId)) {
this.paymentId = data().deepCopy(fields()[2].schema(), other.paymentId);
fieldSetFlags()[2] = true;
}
if (isValidValue(fields()[3], other.customerId)) {
this.customerId = data().deepCopy(fields()[3].schema(), other.customerId);
fieldSetFlags()[3] = true;
}
if (isValidValue(fields()[4], other.orderId)) {
this.orderId = data().deepCopy(fields()[4].schema(), other.orderId);
fieldSetFlags()[4] = true;
}
if (isValidValue(fields()[5], other.price)) {
this.price = data().deepCopy(fields()[5].schema(), other.price);
fieldSetFlags()[5] = true;
}
if (isValidValue(fields()[6], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[6].schema(), other.createdAt);
fieldSetFlags()[6] = true;
}
if (isValidValue(fields()[7], other.paymentStatus)) {
this.paymentStatus = data().deepCopy(fields()[7].schema(), other.paymentStatus);
fieldSetFlags()[7] = true;
}
if (isValidValue(fields()[8], other.failureMessages)) {
this.failureMessages = data().deepCopy(fields()[8].schema(), other.failureMessages);
fieldSetFlags()[8] = true;
}
}
/**
* Gets the value of the 'id' field.
* @return The value.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value The value of 'id'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setId(java.lang.String value) {
validate(fields()[0], value);
this.id = value;
fieldSetFlags()[0] = true;
return this;
}
/**
* Checks whether the 'id' field has been set.
* @return True if the 'id' field has been set, false otherwise.
*/
public boolean hasId() {
return fieldSetFlags()[0];
}
/**
* Clears the value of the 'id' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearId() {
id = null;
fieldSetFlags()[0] = false;
return this;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value The value of 'sagaId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setSagaId(java.lang.String value) {
validate(fields()[1], value);
this.sagaId = value;
fieldSetFlags()[1] = true;
return this;
}
/**
* Checks whether the 'sagaId' field has been set.
* @return True if the 'sagaId' field has been set, false otherwise.
*/
public boolean hasSagaId() {
return fieldSetFlags()[1];
}
/**
* Clears the value of the 'sagaId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearSagaId() {
sagaId = null;
fieldSetFlags()[1] = false;
return this;
}
/**
* Gets the value of the 'paymentId' field.
* @return The value.
*/
public java.lang.String getPaymentId() {
return paymentId;
}
/**
* Sets the value of the 'paymentId' field.
* @param value The value of 'paymentId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setPaymentId(java.lang.String value) {
validate(fields()[2], value);
this.paymentId = value;
fieldSetFlags()[2] = true;
return this;
}
/**
* Checks whether the 'paymentId' field has been set.
* @return True if the 'paymentId' field has been set, false otherwise.
*/
public boolean hasPaymentId() {
return fieldSetFlags()[2];
}
/**
* Clears the value of the 'paymentId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearPaymentId() {
paymentId = null;
fieldSetFlags()[2] = false;
return this;
}
/**
* Gets the value of the 'customerId' field.
* @return The value.
*/
public java.lang.String getCustomerId() {
return customerId;
}
/**
* Sets the value of the 'customerId' field.
* @param value The value of 'customerId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setCustomerId(java.lang.String value) {
validate(fields()[3], value);
this.customerId = value;
fieldSetFlags()[3] = true;
return this;
}
/**
* Checks whether the 'customerId' field has been set.
* @return True if the 'customerId' field has been set, false otherwise.
*/
public boolean hasCustomerId() {
return fieldSetFlags()[3];
}
/**
* Clears the value of the 'customerId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearCustomerId() {
customerId = null;
fieldSetFlags()[3] = false;
return this;
}
/**
* Gets the value of the 'orderId' field.
* @return The value.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value The value of 'orderId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setOrderId(java.lang.String value) {
validate(fields()[4], value);
this.orderId = value;
fieldSetFlags()[4] = true;
return this;
}
/**
* Checks whether the 'orderId' field has been set.
* @return True if the 'orderId' field has been set, false otherwise.
*/
public boolean hasOrderId() {
return fieldSetFlags()[4];
}
/**
* Clears the value of the 'orderId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearOrderId() {
orderId = null;
fieldSetFlags()[4] = false;
return this;
}
/**
* Gets the value of the 'price' field.
* @return The value.
*/
public java.math.BigDecimal getPrice() {
return price;
}
/**
* Sets the value of the 'price' field.
* @param value The value of 'price'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setPrice(java.math.BigDecimal value) {
validate(fields()[5], value);
this.price = value;
fieldSetFlags()[5] = true;
return this;
}
/**
* Checks whether the 'price' field has been set.
* @return True if the 'price' field has been set, false otherwise.
*/
public boolean hasPrice() {
return fieldSetFlags()[5];
}
/**
* Clears the value of the 'price' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearPrice() {
price = null;
fieldSetFlags()[5] = false;
return this;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value The value of 'createdAt'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setCreatedAt(java.time.Instant value) {
validate(fields()[6], value);
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
fieldSetFlags()[6] = true;
return this;
}
/**
* Checks whether the 'createdAt' field has been set.
* @return True if the 'createdAt' field has been set, false otherwise.
*/
public boolean hasCreatedAt() {
return fieldSetFlags()[6];
}
/**
* Clears the value of the 'createdAt' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearCreatedAt() {
fieldSetFlags()[6] = false;
return this;
}
/**
* Gets the value of the 'paymentStatus' field.
* @return The value.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentStatus getPaymentStatus() {
return paymentStatus;
}
/**
* Sets the value of the 'paymentStatus' field.
* @param value The value of 'paymentStatus'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setPaymentStatus(com.food.ordering.system.kafka.order.avro.model.PaymentStatus value) {
validate(fields()[7], value);
this.paymentStatus = value;
fieldSetFlags()[7] = true;
return this;
}
/**
* Checks whether the 'paymentStatus' field has been set.
* @return True if the 'paymentStatus' field has been set, false otherwise.
*/
public boolean hasPaymentStatus() {
return fieldSetFlags()[7];
}
/**
* Clears the value of the 'paymentStatus' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearPaymentStatus() {
paymentStatus = null;
fieldSetFlags()[7] = false;
return this;
}
/**
* Gets the value of the 'failureMessages' field.
* @return The value.
*/
public java.util.List<java.lang.String> getFailureMessages() {
return failureMessages;
}
/**
* Sets the value of the 'failureMessages' field.
* @param value The value of 'failureMessages'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder setFailureMessages(java.util.List<java.lang.String> value) {
validate(fields()[8], value);
this.failureMessages = value;
fieldSetFlags()[8] = true;
return this;
}
/**
* Checks whether the 'failureMessages' field has been set.
* @return True if the 'failureMessages' field has been set, false otherwise.
*/
public boolean hasFailureMessages() {
return fieldSetFlags()[8];
}
/**
* Clears the value of the 'failureMessages' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.PaymentResponseAvroModel.Builder clearFailureMessages() {
failureMessages = null;
fieldSetFlags()[8] = false;
return this;
}
@Override
@SuppressWarnings("unchecked")
public PaymentResponseAvroModel build() {
try {
PaymentResponseAvroModel record = new PaymentResponseAvroModel();
record.id = fieldSetFlags()[0] ? this.id : (java.lang.String) defaultValue(fields()[0]);
record.sagaId = fieldSetFlags()[1] ? this.sagaId : (java.lang.String) defaultValue(fields()[1]);
record.paymentId = fieldSetFlags()[2] ? this.paymentId : (java.lang.String) defaultValue(fields()[2]);
record.customerId = fieldSetFlags()[3] ? this.customerId : (java.lang.String) defaultValue(fields()[3]);
record.orderId = fieldSetFlags()[4] ? this.orderId : (java.lang.String) defaultValue(fields()[4]);
record.price = fieldSetFlags()[5] ? this.price : (java.math.BigDecimal) defaultValue(fields()[5]);
record.createdAt = fieldSetFlags()[6] ? this.createdAt : (java.time.Instant) defaultValue(fields()[6]);
record.paymentStatus = fieldSetFlags()[7] ? this.paymentStatus : (com.food.ordering.system.kafka.order.avro.model.PaymentStatus) defaultValue(fields()[7]);
record.failureMessages = fieldSetFlags()[8] ? this.failureMessages : (java.util.List<java.lang.String>) defaultValue(fields()[8]);
return record;
} catch (org.apache.avro.AvroMissingFieldException e) {
throw e;
} catch (java.lang.Exception e) {
throw new org.apache.avro.AvroRuntimeException(e);
}
}
}
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumWriter<PaymentResponseAvroModel>
WRITER$ = (org.apache.avro.io.DatumWriter<PaymentResponseAvroModel>)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<PaymentResponseAvroModel>
READER$ = (org.apache.avro.io.DatumReader<PaymentResponseAvroModel>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
READER$.read(this, SpecificData.getDecoder(in));
}
}

View File

@@ -0,0 +1,13 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
@org.apache.avro.specific.AvroGenerated
public enum PaymentStatus implements org.apache.avro.generic.GenericEnumSymbol<PaymentStatus> {
COMPLETED, CANCELLED, FAILED ;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"enum\",\"name\":\"PaymentStatus\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"symbols\":[\"COMPLETED\",\"CANCELLED\",\"FAILED\"]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
public org.apache.avro.Schema getSchema() { return SCHEMA$; }
}

View File

@@ -0,0 +1,390 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
import org.apache.avro.message.BinaryMessageDecoder;
import org.apache.avro.message.BinaryMessageEncoder;
import org.apache.avro.message.SchemaStore;
import org.apache.avro.specific.SpecificData;
@org.apache.avro.specific.AvroGenerated
public class Product extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
private static final long serialVersionUID = -6511580554663840009L;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"Product\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"fields\":[{\"name\":\"id\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"logicalType\":\"uuid\"},{\"name\":\"quantity\",\"type\":\"int\"}]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
private static final BinaryMessageEncoder<Product> ENCODER =
new BinaryMessageEncoder<Product>(MODEL$, SCHEMA$);
private static final BinaryMessageDecoder<Product> DECODER =
new BinaryMessageDecoder<Product>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
public static BinaryMessageEncoder<Product> getEncoder() {
return ENCODER;
}
/**
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
public static BinaryMessageDecoder<Product> 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
* @return a BinaryMessageDecoder instance for this class backed by the given SchemaStore
*/
public static BinaryMessageDecoder<Product> createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<Product>(MODEL$, SCHEMA$, resolver);
}
/**
* Serializes this Product to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
public java.nio.ByteBuffer toByteBuffer() throws java.io.IOException {
return ENCODER.encode(this);
}
/**
* Deserializes a Product from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this class
* @return a Product instance decoded from the given buffer
* @throws java.io.IOException if the given bytes could not be deserialized into an instance of this class
*/
public static Product fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
private java.lang.String id;
private int quantity;
/**
* Default constructor. Note that this does not initialize fields
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
public Product() {}
/**
* All-args constructor.
* @param id The new value for id
* @param quantity The new value for quantity
*/
public Product(java.lang.String id, java.lang.Integer quantity) {
this.id = id;
this.quantity = quantity;
}
public org.apache.avro.specific.SpecificData getSpecificData() { return MODEL$; }
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 id;
case 1: return quantity;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
// Used by DatumReader. Applications should not call.
@SuppressWarnings(value="unchecked")
public void put(int field$, java.lang.Object value$) {
switch (field$) {
case 0: id = value$ != null ? value$.toString() : null; break;
case 1: quantity = (java.lang.Integer)value$; break;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
/**
* Gets the value of the 'id' field.
* @return The value of the 'id' field.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value the value to set.
*/
public void setId(java.lang.String value) {
this.id = value;
}
/**
* Gets the value of the 'quantity' field.
* @return The value of the 'quantity' field.
*/
public int getQuantity() {
return quantity;
}
/**
* Sets the value of the 'quantity' field.
* @param value the value to set.
*/
public void setQuantity(int value) {
this.quantity = value;
}
/**
* Creates a new Product RecordBuilder.
* @return A new Product RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.Product.Builder newBuilder() {
return new com.food.ordering.system.kafka.order.avro.model.Product.Builder();
}
/**
* Creates a new Product RecordBuilder by copying an existing Builder.
* @param other The existing builder to copy.
* @return A new Product RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.Product.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.Product.Builder other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.Product.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.Product.Builder(other);
}
}
/**
* Creates a new Product RecordBuilder by copying an existing Product instance.
* @param other The existing instance to copy.
* @return A new Product RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.Product.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.Product other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.Product.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.Product.Builder(other);
}
}
/**
* RecordBuilder for Product instances.
*/
@org.apache.avro.specific.AvroGenerated
public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<Product>
implements org.apache.avro.data.RecordBuilder<Product> {
private java.lang.String id;
private int quantity;
/** Creates a new Builder */
private Builder() {
super(SCHEMA$, MODEL$);
}
/**
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.Product.Builder other) {
super(other);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = other.fieldSetFlags()[0];
}
if (isValidValue(fields()[1], other.quantity)) {
this.quantity = data().deepCopy(fields()[1].schema(), other.quantity);
fieldSetFlags()[1] = other.fieldSetFlags()[1];
}
}
/**
* Creates a Builder by copying an existing Product instance
* @param other The existing instance to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.Product other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = true;
}
if (isValidValue(fields()[1], other.quantity)) {
this.quantity = data().deepCopy(fields()[1].schema(), other.quantity);
fieldSetFlags()[1] = true;
}
}
/**
* Gets the value of the 'id' field.
* @return The value.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value The value of 'id'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.Product.Builder setId(java.lang.String value) {
validate(fields()[0], value);
this.id = value;
fieldSetFlags()[0] = true;
return this;
}
/**
* Checks whether the 'id' field has been set.
* @return True if the 'id' field has been set, false otherwise.
*/
public boolean hasId() {
return fieldSetFlags()[0];
}
/**
* Clears the value of the 'id' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.Product.Builder clearId() {
id = null;
fieldSetFlags()[0] = false;
return this;
}
/**
* Gets the value of the 'quantity' field.
* @return The value.
*/
public int getQuantity() {
return quantity;
}
/**
* Sets the value of the 'quantity' field.
* @param value The value of 'quantity'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.Product.Builder setQuantity(int value) {
validate(fields()[1], value);
this.quantity = value;
fieldSetFlags()[1] = true;
return this;
}
/**
* Checks whether the 'quantity' field has been set.
* @return True if the 'quantity' field has been set, false otherwise.
*/
public boolean hasQuantity() {
return fieldSetFlags()[1];
}
/**
* Clears the value of the 'quantity' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.Product.Builder clearQuantity() {
fieldSetFlags()[1] = false;
return this;
}
@Override
@SuppressWarnings("unchecked")
public Product build() {
try {
Product record = new Product();
record.id = fieldSetFlags()[0] ? this.id : (java.lang.String) defaultValue(fields()[0]);
record.quantity = fieldSetFlags()[1] ? this.quantity : (java.lang.Integer) defaultValue(fields()[1]);
return record;
} catch (org.apache.avro.AvroMissingFieldException e) {
throw e;
} catch (java.lang.Exception e) {
throw new org.apache.avro.AvroRuntimeException(e);
}
}
}
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumWriter<Product>
WRITER$ = (org.apache.avro.io.DatumWriter<Product>)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<Product>
READER$ = (org.apache.avro.io.DatumReader<Product>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
READER$.read(this, SpecificData.getDecoder(in));
}
@Override protected boolean hasCustomCoders() { return true; }
@Override public void customEncode(org.apache.avro.io.Encoder out)
throws java.io.IOException
{
out.writeString(this.id);
out.writeInt(this.quantity);
}
@Override public void customDecode(org.apache.avro.io.ResolvingDecoder in)
throws java.io.IOException
{
org.apache.avro.Schema.Field[] fieldOrder = in.readFieldOrderIfDiff();
if (fieldOrder == null) {
this.id = in.readString();
this.quantity = in.readInt();
} else {
for (int i = 0; i < 2; i++) {
switch (fieldOrder[i].pos()) {
case 0:
this.id = in.readString();
break;
case 1:
this.quantity = in.readInt();
break;
default:
throw new java.io.IOException("Corrupt ResolvingDecoder.");
}
}
}
}
}

View File

@@ -0,0 +1,809 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
import org.apache.avro.generic.GenericArray;
import org.apache.avro.specific.SpecificData;
import org.apache.avro.util.Utf8;
import org.apache.avro.message.BinaryMessageEncoder;
import org.apache.avro.message.BinaryMessageDecoder;
import org.apache.avro.message.SchemaStore;
@org.apache.avro.specific.AvroGenerated
public class RestaurantApprovalRequestAvroModel extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
private static final long serialVersionUID = -3917361261016430486L;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"RestaurantApprovalRequestAvroModel\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"fields\":[{\"name\":\"id\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"sagaId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"restaurantId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"orderId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"restaurantOrderStatus\",\"type\":{\"type\":\"enum\",\"name\":\"RestaurantOrderStatus\",\"symbols\":[\"PAID\"]}},{\"name\":\"products\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"record\",\"name\":\"Product\",\"fields\":[{\"name\":\"id\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"logicalType\":\"uuid\"},{\"name\":\"quantity\",\"type\":\"int\"}]}}},{\"name\":\"price\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":10,\"scale\":2}},{\"name\":\"createdAt\",\"type\":{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}}]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
static {
MODEL$.addLogicalTypeConversion(new org.apache.avro.data.TimeConversions.TimestampMillisConversion());
MODEL$.addLogicalTypeConversion(new org.apache.avro.Conversions.DecimalConversion());
}
private static final BinaryMessageEncoder<RestaurantApprovalRequestAvroModel> ENCODER =
new BinaryMessageEncoder<RestaurantApprovalRequestAvroModel>(MODEL$, SCHEMA$);
private static final BinaryMessageDecoder<RestaurantApprovalRequestAvroModel> DECODER =
new BinaryMessageDecoder<RestaurantApprovalRequestAvroModel>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
public static BinaryMessageEncoder<RestaurantApprovalRequestAvroModel> getEncoder() {
return ENCODER;
}
/**
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
public static BinaryMessageDecoder<RestaurantApprovalRequestAvroModel> 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
* @return a BinaryMessageDecoder instance for this class backed by the given SchemaStore
*/
public static BinaryMessageDecoder<RestaurantApprovalRequestAvroModel> createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<RestaurantApprovalRequestAvroModel>(MODEL$, SCHEMA$, resolver);
}
/**
* Serializes this RestaurantApprovalRequestAvroModel to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
public java.nio.ByteBuffer toByteBuffer() throws java.io.IOException {
return ENCODER.encode(this);
}
/**
* Deserializes a RestaurantApprovalRequestAvroModel from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this class
* @return a RestaurantApprovalRequestAvroModel instance decoded from the given buffer
* @throws java.io.IOException if the given bytes could not be deserialized into an instance of this class
*/
public static RestaurantApprovalRequestAvroModel fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String restaurantId;
private java.lang.String orderId;
private com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus restaurantOrderStatus;
private java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> products;
private java.math.BigDecimal price;
private java.time.Instant createdAt;
/**
* Default constructor. Note that this does not initialize fields
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
public RestaurantApprovalRequestAvroModel() {}
/**
* All-args constructor.
* @param id The new value for id
* @param sagaId The new value for sagaId
* @param restaurantId The new value for restaurantId
* @param orderId The new value for orderId
* @param restaurantOrderStatus The new value for restaurantOrderStatus
* @param products The new value for products
* @param price The new value for price
* @param createdAt The new value for createdAt
*/
public RestaurantApprovalRequestAvroModel(java.lang.String id, java.lang.String sagaId, java.lang.String restaurantId, java.lang.String orderId, com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus restaurantOrderStatus, java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> products, java.math.BigDecimal price, java.time.Instant createdAt) {
this.id = id;
this.sagaId = sagaId;
this.restaurantId = restaurantId;
this.orderId = orderId;
this.restaurantOrderStatus = restaurantOrderStatus;
this.products = products;
this.price = price;
this.createdAt = createdAt.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
}
public org.apache.avro.specific.SpecificData getSpecificData() { return MODEL$; }
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 id;
case 1: return sagaId;
case 2: return restaurantId;
case 3: return orderId;
case 4: return restaurantOrderStatus;
case 5: return products;
case 6: return price;
case 7: return createdAt;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
private static final org.apache.avro.Conversion<?>[] conversions =
new org.apache.avro.Conversion<?>[] {
null,
null,
null,
null,
null,
null,
new org.apache.avro.Conversions.DecimalConversion(),
new org.apache.avro.data.TimeConversions.TimestampMillisConversion(),
null
};
@Override
public org.apache.avro.Conversion<?> getConversion(int field) {
return conversions[field];
}
// Used by DatumReader. Applications should not call.
@SuppressWarnings(value="unchecked")
public void put(int field$, java.lang.Object value$) {
switch (field$) {
case 0: id = value$ != null ? value$.toString() : null; break;
case 1: sagaId = value$ != null ? value$.toString() : null; break;
case 2: restaurantId = value$ != null ? value$.toString() : null; break;
case 3: orderId = value$ != null ? value$.toString() : null; break;
case 4: restaurantOrderStatus = (com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus)value$; break;
case 5: products = (java.util.List<com.food.ordering.system.kafka.order.avro.model.Product>)value$; break;
case 6: price = (java.math.BigDecimal)value$; break;
case 7: createdAt = (java.time.Instant)value$; break;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
/**
* Gets the value of the 'id' field.
* @return The value of the 'id' field.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value the value to set.
*/
public void setId(java.lang.String value) {
this.id = value;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value of the 'sagaId' field.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value the value to set.
*/
public void setSagaId(java.lang.String value) {
this.sagaId = value;
}
/**
* Gets the value of the 'restaurantId' field.
* @return The value of the 'restaurantId' field.
*/
public java.lang.String getRestaurantId() {
return restaurantId;
}
/**
* Sets the value of the 'restaurantId' field.
* @param value the value to set.
*/
public void setRestaurantId(java.lang.String value) {
this.restaurantId = value;
}
/**
* Gets the value of the 'orderId' field.
* @return The value of the 'orderId' field.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value the value to set.
*/
public void setOrderId(java.lang.String value) {
this.orderId = value;
}
/**
* Gets the value of the 'restaurantOrderStatus' field.
* @return The value of the 'restaurantOrderStatus' field.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus getRestaurantOrderStatus() {
return restaurantOrderStatus;
}
/**
* Sets the value of the 'restaurantOrderStatus' field.
* @param value the value to set.
*/
public void setRestaurantOrderStatus(com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus value) {
this.restaurantOrderStatus = value;
}
/**
* Gets the value of the 'products' field.
* @return The value of the 'products' field.
*/
public java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> getProducts() {
return products;
}
/**
* Sets the value of the 'products' field.
* @param value the value to set.
*/
public void setProducts(java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> value) {
this.products = value;
}
/**
* Gets the value of the 'price' field.
* @return The value of the 'price' field.
*/
public java.math.BigDecimal getPrice() {
return price;
}
/**
* Sets the value of the 'price' field.
* @param value the value to set.
*/
public void setPrice(java.math.BigDecimal value) {
this.price = value;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value of the 'createdAt' field.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value the value to set.
*/
public void setCreatedAt(java.time.Instant value) {
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
}
/**
* Creates a new RestaurantApprovalRequestAvroModel RecordBuilder.
* @return A new RestaurantApprovalRequestAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder newBuilder() {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder();
}
/**
* Creates a new RestaurantApprovalRequestAvroModel RecordBuilder by copying an existing Builder.
* @param other The existing builder to copy.
* @return A new RestaurantApprovalRequestAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder(other);
}
}
/**
* Creates a new RestaurantApprovalRequestAvroModel RecordBuilder by copying an existing RestaurantApprovalRequestAvroModel instance.
* @param other The existing instance to copy.
* @return A new RestaurantApprovalRequestAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder(other);
}
}
/**
* RecordBuilder for RestaurantApprovalRequestAvroModel instances.
*/
@org.apache.avro.specific.AvroGenerated
public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<RestaurantApprovalRequestAvroModel>
implements org.apache.avro.data.RecordBuilder<RestaurantApprovalRequestAvroModel> {
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String restaurantId;
private java.lang.String orderId;
private com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus restaurantOrderStatus;
private java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> products;
private java.math.BigDecimal price;
private java.time.Instant createdAt;
/** Creates a new Builder */
private Builder() {
super(SCHEMA$, MODEL$);
}
/**
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder other) {
super(other);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = other.fieldSetFlags()[0];
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = other.fieldSetFlags()[1];
}
if (isValidValue(fields()[2], other.restaurantId)) {
this.restaurantId = data().deepCopy(fields()[2].schema(), other.restaurantId);
fieldSetFlags()[2] = other.fieldSetFlags()[2];
}
if (isValidValue(fields()[3], other.orderId)) {
this.orderId = data().deepCopy(fields()[3].schema(), other.orderId);
fieldSetFlags()[3] = other.fieldSetFlags()[3];
}
if (isValidValue(fields()[4], other.restaurantOrderStatus)) {
this.restaurantOrderStatus = data().deepCopy(fields()[4].schema(), other.restaurantOrderStatus);
fieldSetFlags()[4] = other.fieldSetFlags()[4];
}
if (isValidValue(fields()[5], other.products)) {
this.products = data().deepCopy(fields()[5].schema(), other.products);
fieldSetFlags()[5] = other.fieldSetFlags()[5];
}
if (isValidValue(fields()[6], other.price)) {
this.price = data().deepCopy(fields()[6].schema(), other.price);
fieldSetFlags()[6] = other.fieldSetFlags()[6];
}
if (isValidValue(fields()[7], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[7].schema(), other.createdAt);
fieldSetFlags()[7] = other.fieldSetFlags()[7];
}
}
/**
* Creates a Builder by copying an existing RestaurantApprovalRequestAvroModel instance
* @param other The existing instance to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = true;
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = true;
}
if (isValidValue(fields()[2], other.restaurantId)) {
this.restaurantId = data().deepCopy(fields()[2].schema(), other.restaurantId);
fieldSetFlags()[2] = true;
}
if (isValidValue(fields()[3], other.orderId)) {
this.orderId = data().deepCopy(fields()[3].schema(), other.orderId);
fieldSetFlags()[3] = true;
}
if (isValidValue(fields()[4], other.restaurantOrderStatus)) {
this.restaurantOrderStatus = data().deepCopy(fields()[4].schema(), other.restaurantOrderStatus);
fieldSetFlags()[4] = true;
}
if (isValidValue(fields()[5], other.products)) {
this.products = data().deepCopy(fields()[5].schema(), other.products);
fieldSetFlags()[5] = true;
}
if (isValidValue(fields()[6], other.price)) {
this.price = data().deepCopy(fields()[6].schema(), other.price);
fieldSetFlags()[6] = true;
}
if (isValidValue(fields()[7], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[7].schema(), other.createdAt);
fieldSetFlags()[7] = true;
}
}
/**
* Gets the value of the 'id' field.
* @return The value.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value The value of 'id'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setId(java.lang.String value) {
validate(fields()[0], value);
this.id = value;
fieldSetFlags()[0] = true;
return this;
}
/**
* Checks whether the 'id' field has been set.
* @return True if the 'id' field has been set, false otherwise.
*/
public boolean hasId() {
return fieldSetFlags()[0];
}
/**
* Clears the value of the 'id' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearId() {
id = null;
fieldSetFlags()[0] = false;
return this;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value The value of 'sagaId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setSagaId(java.lang.String value) {
validate(fields()[1], value);
this.sagaId = value;
fieldSetFlags()[1] = true;
return this;
}
/**
* Checks whether the 'sagaId' field has been set.
* @return True if the 'sagaId' field has been set, false otherwise.
*/
public boolean hasSagaId() {
return fieldSetFlags()[1];
}
/**
* Clears the value of the 'sagaId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearSagaId() {
sagaId = null;
fieldSetFlags()[1] = false;
return this;
}
/**
* Gets the value of the 'restaurantId' field.
* @return The value.
*/
public java.lang.String getRestaurantId() {
return restaurantId;
}
/**
* Sets the value of the 'restaurantId' field.
* @param value The value of 'restaurantId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setRestaurantId(java.lang.String value) {
validate(fields()[2], value);
this.restaurantId = value;
fieldSetFlags()[2] = true;
return this;
}
/**
* Checks whether the 'restaurantId' field has been set.
* @return True if the 'restaurantId' field has been set, false otherwise.
*/
public boolean hasRestaurantId() {
return fieldSetFlags()[2];
}
/**
* Clears the value of the 'restaurantId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearRestaurantId() {
restaurantId = null;
fieldSetFlags()[2] = false;
return this;
}
/**
* Gets the value of the 'orderId' field.
* @return The value.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value The value of 'orderId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setOrderId(java.lang.String value) {
validate(fields()[3], value);
this.orderId = value;
fieldSetFlags()[3] = true;
return this;
}
/**
* Checks whether the 'orderId' field has been set.
* @return True if the 'orderId' field has been set, false otherwise.
*/
public boolean hasOrderId() {
return fieldSetFlags()[3];
}
/**
* Clears the value of the 'orderId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearOrderId() {
orderId = null;
fieldSetFlags()[3] = false;
return this;
}
/**
* Gets the value of the 'restaurantOrderStatus' field.
* @return The value.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus getRestaurantOrderStatus() {
return restaurantOrderStatus;
}
/**
* Sets the value of the 'restaurantOrderStatus' field.
* @param value The value of 'restaurantOrderStatus'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setRestaurantOrderStatus(com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus value) {
validate(fields()[4], value);
this.restaurantOrderStatus = value;
fieldSetFlags()[4] = true;
return this;
}
/**
* Checks whether the 'restaurantOrderStatus' field has been set.
* @return True if the 'restaurantOrderStatus' field has been set, false otherwise.
*/
public boolean hasRestaurantOrderStatus() {
return fieldSetFlags()[4];
}
/**
* Clears the value of the 'restaurantOrderStatus' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearRestaurantOrderStatus() {
restaurantOrderStatus = null;
fieldSetFlags()[4] = false;
return this;
}
/**
* Gets the value of the 'products' field.
* @return The value.
*/
public java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> getProducts() {
return products;
}
/**
* Sets the value of the 'products' field.
* @param value The value of 'products'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setProducts(java.util.List<com.food.ordering.system.kafka.order.avro.model.Product> value) {
validate(fields()[5], value);
this.products = value;
fieldSetFlags()[5] = true;
return this;
}
/**
* Checks whether the 'products' field has been set.
* @return True if the 'products' field has been set, false otherwise.
*/
public boolean hasProducts() {
return fieldSetFlags()[5];
}
/**
* Clears the value of the 'products' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearProducts() {
products = null;
fieldSetFlags()[5] = false;
return this;
}
/**
* Gets the value of the 'price' field.
* @return The value.
*/
public java.math.BigDecimal getPrice() {
return price;
}
/**
* Sets the value of the 'price' field.
* @param value The value of 'price'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setPrice(java.math.BigDecimal value) {
validate(fields()[6], value);
this.price = value;
fieldSetFlags()[6] = true;
return this;
}
/**
* Checks whether the 'price' field has been set.
* @return True if the 'price' field has been set, false otherwise.
*/
public boolean hasPrice() {
return fieldSetFlags()[6];
}
/**
* Clears the value of the 'price' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearPrice() {
price = null;
fieldSetFlags()[6] = false;
return this;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value The value of 'createdAt'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder setCreatedAt(java.time.Instant value) {
validate(fields()[7], value);
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
fieldSetFlags()[7] = true;
return this;
}
/**
* Checks whether the 'createdAt' field has been set.
* @return True if the 'createdAt' field has been set, false otherwise.
*/
public boolean hasCreatedAt() {
return fieldSetFlags()[7];
}
/**
* Clears the value of the 'createdAt' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalRequestAvroModel.Builder clearCreatedAt() {
fieldSetFlags()[7] = false;
return this;
}
@Override
@SuppressWarnings("unchecked")
public RestaurantApprovalRequestAvroModel build() {
try {
RestaurantApprovalRequestAvroModel record = new RestaurantApprovalRequestAvroModel();
record.id = fieldSetFlags()[0] ? this.id : (java.lang.String) defaultValue(fields()[0]);
record.sagaId = fieldSetFlags()[1] ? this.sagaId : (java.lang.String) defaultValue(fields()[1]);
record.restaurantId = fieldSetFlags()[2] ? this.restaurantId : (java.lang.String) defaultValue(fields()[2]);
record.orderId = fieldSetFlags()[3] ? this.orderId : (java.lang.String) defaultValue(fields()[3]);
record.restaurantOrderStatus = fieldSetFlags()[4] ? this.restaurantOrderStatus : (com.food.ordering.system.kafka.order.avro.model.RestaurantOrderStatus) defaultValue(fields()[4]);
record.products = fieldSetFlags()[5] ? this.products : (java.util.List<com.food.ordering.system.kafka.order.avro.model.Product>) defaultValue(fields()[5]);
record.price = fieldSetFlags()[6] ? this.price : (java.math.BigDecimal) defaultValue(fields()[6]);
record.createdAt = fieldSetFlags()[7] ? this.createdAt : (java.time.Instant) defaultValue(fields()[7]);
return record;
} catch (org.apache.avro.AvroMissingFieldException e) {
throw e;
} catch (java.lang.Exception e) {
throw new org.apache.avro.AvroRuntimeException(e);
}
}
}
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumWriter<RestaurantApprovalRequestAvroModel>
WRITER$ = (org.apache.avro.io.DatumWriter<RestaurantApprovalRequestAvroModel>)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<RestaurantApprovalRequestAvroModel>
READER$ = (org.apache.avro.io.DatumReader<RestaurantApprovalRequestAvroModel>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
READER$.read(this, SpecificData.getDecoder(in));
}
}

View File

@@ -0,0 +1,735 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
import org.apache.avro.generic.GenericArray;
import org.apache.avro.specific.SpecificData;
import org.apache.avro.util.Utf8;
import org.apache.avro.message.BinaryMessageEncoder;
import org.apache.avro.message.BinaryMessageDecoder;
import org.apache.avro.message.SchemaStore;
@org.apache.avro.specific.AvroGenerated
public class RestaurantApprovalResponseAvroModel extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
private static final long serialVersionUID = -3431989201238018220L;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"RestaurantApprovalResponseAvroModel\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"fields\":[{\"name\":\"id\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"sagaId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"restaurantId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"orderId\",\"type\":{\"type\":\"string\",\"logicalType\":\"uuid\"}},{\"name\":\"createdAt\",\"type\":{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}},{\"name\":\"orderApprovalStatus\",\"type\":{\"type\":\"enum\",\"name\":\"OrderApprovalStatus\",\"symbols\":[\"APPROVED\",\"REJECTED\"]}},{\"name\":\"failureMessages\",\"type\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}}]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
private static final SpecificData MODEL$ = new SpecificData();
static {
MODEL$.addLogicalTypeConversion(new org.apache.avro.data.TimeConversions.TimestampMillisConversion());
}
private static final BinaryMessageEncoder<RestaurantApprovalResponseAvroModel> ENCODER =
new BinaryMessageEncoder<RestaurantApprovalResponseAvroModel>(MODEL$, SCHEMA$);
private static final BinaryMessageDecoder<RestaurantApprovalResponseAvroModel> DECODER =
new BinaryMessageDecoder<RestaurantApprovalResponseAvroModel>(MODEL$, SCHEMA$);
/**
* Return the BinaryMessageEncoder instance used by this class.
* @return the message encoder used by this class
*/
public static BinaryMessageEncoder<RestaurantApprovalResponseAvroModel> getEncoder() {
return ENCODER;
}
/**
* Return the BinaryMessageDecoder instance used by this class.
* @return the message decoder used by this class
*/
public static BinaryMessageDecoder<RestaurantApprovalResponseAvroModel> 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
* @return a BinaryMessageDecoder instance for this class backed by the given SchemaStore
*/
public static BinaryMessageDecoder<RestaurantApprovalResponseAvroModel> createDecoder(SchemaStore resolver) {
return new BinaryMessageDecoder<RestaurantApprovalResponseAvroModel>(MODEL$, SCHEMA$, resolver);
}
/**
* Serializes this RestaurantApprovalResponseAvroModel to a ByteBuffer.
* @return a buffer holding the serialized data for this instance
* @throws java.io.IOException if this instance could not be serialized
*/
public java.nio.ByteBuffer toByteBuffer() throws java.io.IOException {
return ENCODER.encode(this);
}
/**
* Deserializes a RestaurantApprovalResponseAvroModel from a ByteBuffer.
* @param b a byte buffer holding serialized data for an instance of this class
* @return a RestaurantApprovalResponseAvroModel instance decoded from the given buffer
* @throws java.io.IOException if the given bytes could not be deserialized into an instance of this class
*/
public static RestaurantApprovalResponseAvroModel fromByteBuffer(
java.nio.ByteBuffer b) throws java.io.IOException {
return DECODER.decode(b);
}
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String restaurantId;
private java.lang.String orderId;
private java.time.Instant createdAt;
private com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus orderApprovalStatus;
private java.util.List<java.lang.String> failureMessages;
/**
* Default constructor. Note that this does not initialize fields
* to their default values from the schema. If that is desired then
* one should use <code>newBuilder()</code>.
*/
public RestaurantApprovalResponseAvroModel() {}
/**
* All-args constructor.
* @param id The new value for id
* @param sagaId The new value for sagaId
* @param restaurantId The new value for restaurantId
* @param orderId The new value for orderId
* @param createdAt The new value for createdAt
* @param orderApprovalStatus The new value for orderApprovalStatus
* @param failureMessages The new value for failureMessages
*/
public RestaurantApprovalResponseAvroModel(java.lang.String id, java.lang.String sagaId, java.lang.String restaurantId, java.lang.String orderId, java.time.Instant createdAt, com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus orderApprovalStatus, java.util.List<java.lang.String> failureMessages) {
this.id = id;
this.sagaId = sagaId;
this.restaurantId = restaurantId;
this.orderId = orderId;
this.createdAt = createdAt.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
this.orderApprovalStatus = orderApprovalStatus;
this.failureMessages = failureMessages;
}
public org.apache.avro.specific.SpecificData getSpecificData() { return MODEL$; }
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 id;
case 1: return sagaId;
case 2: return restaurantId;
case 3: return orderId;
case 4: return createdAt;
case 5: return orderApprovalStatus;
case 6: return failureMessages;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
private static final org.apache.avro.Conversion<?>[] conversions =
new org.apache.avro.Conversion<?>[] {
null,
null,
null,
null,
new org.apache.avro.data.TimeConversions.TimestampMillisConversion(),
null,
null,
null
};
@Override
public org.apache.avro.Conversion<?> getConversion(int field) {
return conversions[field];
}
// Used by DatumReader. Applications should not call.
@SuppressWarnings(value="unchecked")
public void put(int field$, java.lang.Object value$) {
switch (field$) {
case 0: id = value$ != null ? value$.toString() : null; break;
case 1: sagaId = value$ != null ? value$.toString() : null; break;
case 2: restaurantId = value$ != null ? value$.toString() : null; break;
case 3: orderId = value$ != null ? value$.toString() : null; break;
case 4: createdAt = (java.time.Instant)value$; break;
case 5: orderApprovalStatus = (com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus)value$; break;
case 6: failureMessages = (java.util.List<java.lang.String>)value$; break;
default: throw new IndexOutOfBoundsException("Invalid index: " + field$);
}
}
/**
* Gets the value of the 'id' field.
* @return The value of the 'id' field.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value the value to set.
*/
public void setId(java.lang.String value) {
this.id = value;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value of the 'sagaId' field.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value the value to set.
*/
public void setSagaId(java.lang.String value) {
this.sagaId = value;
}
/**
* Gets the value of the 'restaurantId' field.
* @return The value of the 'restaurantId' field.
*/
public java.lang.String getRestaurantId() {
return restaurantId;
}
/**
* Sets the value of the 'restaurantId' field.
* @param value the value to set.
*/
public void setRestaurantId(java.lang.String value) {
this.restaurantId = value;
}
/**
* Gets the value of the 'orderId' field.
* @return The value of the 'orderId' field.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value the value to set.
*/
public void setOrderId(java.lang.String value) {
this.orderId = value;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value of the 'createdAt' field.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value the value to set.
*/
public void setCreatedAt(java.time.Instant value) {
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
}
/**
* Gets the value of the 'orderApprovalStatus' field.
* @return The value of the 'orderApprovalStatus' field.
*/
public com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus getOrderApprovalStatus() {
return orderApprovalStatus;
}
/**
* Sets the value of the 'orderApprovalStatus' field.
* @param value the value to set.
*/
public void setOrderApprovalStatus(com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus value) {
this.orderApprovalStatus = value;
}
/**
* Gets the value of the 'failureMessages' field.
* @return The value of the 'failureMessages' field.
*/
public java.util.List<java.lang.String> getFailureMessages() {
return failureMessages;
}
/**
* Sets the value of the 'failureMessages' field.
* @param value the value to set.
*/
public void setFailureMessages(java.util.List<java.lang.String> value) {
this.failureMessages = value;
}
/**
* Creates a new RestaurantApprovalResponseAvroModel RecordBuilder.
* @return A new RestaurantApprovalResponseAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder newBuilder() {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder();
}
/**
* Creates a new RestaurantApprovalResponseAvroModel RecordBuilder by copying an existing Builder.
* @param other The existing builder to copy.
* @return A new RestaurantApprovalResponseAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder(other);
}
}
/**
* Creates a new RestaurantApprovalResponseAvroModel RecordBuilder by copying an existing RestaurantApprovalResponseAvroModel instance.
* @param other The existing instance to copy.
* @return A new RestaurantApprovalResponseAvroModel RecordBuilder
*/
public static com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder newBuilder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel other) {
if (other == null) {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder();
} else {
return new com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder(other);
}
}
/**
* RecordBuilder for RestaurantApprovalResponseAvroModel instances.
*/
@org.apache.avro.specific.AvroGenerated
public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<RestaurantApprovalResponseAvroModel>
implements org.apache.avro.data.RecordBuilder<RestaurantApprovalResponseAvroModel> {
private java.lang.String id;
private java.lang.String sagaId;
private java.lang.String restaurantId;
private java.lang.String orderId;
private java.time.Instant createdAt;
private com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus orderApprovalStatus;
private java.util.List<java.lang.String> failureMessages;
/** Creates a new Builder */
private Builder() {
super(SCHEMA$, MODEL$);
}
/**
* Creates a Builder by copying an existing Builder.
* @param other The existing Builder to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder other) {
super(other);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = other.fieldSetFlags()[0];
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = other.fieldSetFlags()[1];
}
if (isValidValue(fields()[2], other.restaurantId)) {
this.restaurantId = data().deepCopy(fields()[2].schema(), other.restaurantId);
fieldSetFlags()[2] = other.fieldSetFlags()[2];
}
if (isValidValue(fields()[3], other.orderId)) {
this.orderId = data().deepCopy(fields()[3].schema(), other.orderId);
fieldSetFlags()[3] = other.fieldSetFlags()[3];
}
if (isValidValue(fields()[4], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[4].schema(), other.createdAt);
fieldSetFlags()[4] = other.fieldSetFlags()[4];
}
if (isValidValue(fields()[5], other.orderApprovalStatus)) {
this.orderApprovalStatus = data().deepCopy(fields()[5].schema(), other.orderApprovalStatus);
fieldSetFlags()[5] = other.fieldSetFlags()[5];
}
if (isValidValue(fields()[6], other.failureMessages)) {
this.failureMessages = data().deepCopy(fields()[6].schema(), other.failureMessages);
fieldSetFlags()[6] = other.fieldSetFlags()[6];
}
}
/**
* Creates a Builder by copying an existing RestaurantApprovalResponseAvroModel instance
* @param other The existing instance to copy.
*/
private Builder(com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel other) {
super(SCHEMA$, MODEL$);
if (isValidValue(fields()[0], other.id)) {
this.id = data().deepCopy(fields()[0].schema(), other.id);
fieldSetFlags()[0] = true;
}
if (isValidValue(fields()[1], other.sagaId)) {
this.sagaId = data().deepCopy(fields()[1].schema(), other.sagaId);
fieldSetFlags()[1] = true;
}
if (isValidValue(fields()[2], other.restaurantId)) {
this.restaurantId = data().deepCopy(fields()[2].schema(), other.restaurantId);
fieldSetFlags()[2] = true;
}
if (isValidValue(fields()[3], other.orderId)) {
this.orderId = data().deepCopy(fields()[3].schema(), other.orderId);
fieldSetFlags()[3] = true;
}
if (isValidValue(fields()[4], other.createdAt)) {
this.createdAt = data().deepCopy(fields()[4].schema(), other.createdAt);
fieldSetFlags()[4] = true;
}
if (isValidValue(fields()[5], other.orderApprovalStatus)) {
this.orderApprovalStatus = data().deepCopy(fields()[5].schema(), other.orderApprovalStatus);
fieldSetFlags()[5] = true;
}
if (isValidValue(fields()[6], other.failureMessages)) {
this.failureMessages = data().deepCopy(fields()[6].schema(), other.failureMessages);
fieldSetFlags()[6] = true;
}
}
/**
* Gets the value of the 'id' field.
* @return The value.
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the 'id' field.
* @param value The value of 'id'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setId(java.lang.String value) {
validate(fields()[0], value);
this.id = value;
fieldSetFlags()[0] = true;
return this;
}
/**
* Checks whether the 'id' field has been set.
* @return True if the 'id' field has been set, false otherwise.
*/
public boolean hasId() {
return fieldSetFlags()[0];
}
/**
* Clears the value of the 'id' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearId() {
id = null;
fieldSetFlags()[0] = false;
return this;
}
/**
* Gets the value of the 'sagaId' field.
* @return The value.
*/
public java.lang.String getSagaId() {
return sagaId;
}
/**
* Sets the value of the 'sagaId' field.
* @param value The value of 'sagaId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setSagaId(java.lang.String value) {
validate(fields()[1], value);
this.sagaId = value;
fieldSetFlags()[1] = true;
return this;
}
/**
* Checks whether the 'sagaId' field has been set.
* @return True if the 'sagaId' field has been set, false otherwise.
*/
public boolean hasSagaId() {
return fieldSetFlags()[1];
}
/**
* Clears the value of the 'sagaId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearSagaId() {
sagaId = null;
fieldSetFlags()[1] = false;
return this;
}
/**
* Gets the value of the 'restaurantId' field.
* @return The value.
*/
public java.lang.String getRestaurantId() {
return restaurantId;
}
/**
* Sets the value of the 'restaurantId' field.
* @param value The value of 'restaurantId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setRestaurantId(java.lang.String value) {
validate(fields()[2], value);
this.restaurantId = value;
fieldSetFlags()[2] = true;
return this;
}
/**
* Checks whether the 'restaurantId' field has been set.
* @return True if the 'restaurantId' field has been set, false otherwise.
*/
public boolean hasRestaurantId() {
return fieldSetFlags()[2];
}
/**
* Clears the value of the 'restaurantId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearRestaurantId() {
restaurantId = null;
fieldSetFlags()[2] = false;
return this;
}
/**
* Gets the value of the 'orderId' field.
* @return The value.
*/
public java.lang.String getOrderId() {
return orderId;
}
/**
* Sets the value of the 'orderId' field.
* @param value The value of 'orderId'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setOrderId(java.lang.String value) {
validate(fields()[3], value);
this.orderId = value;
fieldSetFlags()[3] = true;
return this;
}
/**
* Checks whether the 'orderId' field has been set.
* @return True if the 'orderId' field has been set, false otherwise.
*/
public boolean hasOrderId() {
return fieldSetFlags()[3];
}
/**
* Clears the value of the 'orderId' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearOrderId() {
orderId = null;
fieldSetFlags()[3] = false;
return this;
}
/**
* Gets the value of the 'createdAt' field.
* @return The value.
*/
public java.time.Instant getCreatedAt() {
return createdAt;
}
/**
* Sets the value of the 'createdAt' field.
* @param value The value of 'createdAt'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setCreatedAt(java.time.Instant value) {
validate(fields()[4], value);
this.createdAt = value.truncatedTo(java.time.temporal.ChronoUnit.MILLIS);
fieldSetFlags()[4] = true;
return this;
}
/**
* Checks whether the 'createdAt' field has been set.
* @return True if the 'createdAt' field has been set, false otherwise.
*/
public boolean hasCreatedAt() {
return fieldSetFlags()[4];
}
/**
* Clears the value of the 'createdAt' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearCreatedAt() {
fieldSetFlags()[4] = false;
return this;
}
/**
* Gets the value of the 'orderApprovalStatus' field.
* @return The value.
*/
public com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus getOrderApprovalStatus() {
return orderApprovalStatus;
}
/**
* Sets the value of the 'orderApprovalStatus' field.
* @param value The value of 'orderApprovalStatus'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setOrderApprovalStatus(com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus value) {
validate(fields()[5], value);
this.orderApprovalStatus = value;
fieldSetFlags()[5] = true;
return this;
}
/**
* Checks whether the 'orderApprovalStatus' field has been set.
* @return True if the 'orderApprovalStatus' field has been set, false otherwise.
*/
public boolean hasOrderApprovalStatus() {
return fieldSetFlags()[5];
}
/**
* Clears the value of the 'orderApprovalStatus' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearOrderApprovalStatus() {
orderApprovalStatus = null;
fieldSetFlags()[5] = false;
return this;
}
/**
* Gets the value of the 'failureMessages' field.
* @return The value.
*/
public java.util.List<java.lang.String> getFailureMessages() {
return failureMessages;
}
/**
* Sets the value of the 'failureMessages' field.
* @param value The value of 'failureMessages'.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder setFailureMessages(java.util.List<java.lang.String> value) {
validate(fields()[6], value);
this.failureMessages = value;
fieldSetFlags()[6] = true;
return this;
}
/**
* Checks whether the 'failureMessages' field has been set.
* @return True if the 'failureMessages' field has been set, false otherwise.
*/
public boolean hasFailureMessages() {
return fieldSetFlags()[6];
}
/**
* Clears the value of the 'failureMessages' field.
* @return This builder.
*/
public com.food.ordering.system.kafka.order.avro.model.RestaurantApprovalResponseAvroModel.Builder clearFailureMessages() {
failureMessages = null;
fieldSetFlags()[6] = false;
return this;
}
@Override
@SuppressWarnings("unchecked")
public RestaurantApprovalResponseAvroModel build() {
try {
RestaurantApprovalResponseAvroModel record = new RestaurantApprovalResponseAvroModel();
record.id = fieldSetFlags()[0] ? this.id : (java.lang.String) defaultValue(fields()[0]);
record.sagaId = fieldSetFlags()[1] ? this.sagaId : (java.lang.String) defaultValue(fields()[1]);
record.restaurantId = fieldSetFlags()[2] ? this.restaurantId : (java.lang.String) defaultValue(fields()[2]);
record.orderId = fieldSetFlags()[3] ? this.orderId : (java.lang.String) defaultValue(fields()[3]);
record.createdAt = fieldSetFlags()[4] ? this.createdAt : (java.time.Instant) defaultValue(fields()[4]);
record.orderApprovalStatus = fieldSetFlags()[5] ? this.orderApprovalStatus : (com.food.ordering.system.kafka.order.avro.model.OrderApprovalStatus) defaultValue(fields()[5]);
record.failureMessages = fieldSetFlags()[6] ? this.failureMessages : (java.util.List<java.lang.String>) defaultValue(fields()[6]);
return record;
} catch (org.apache.avro.AvroMissingFieldException e) {
throw e;
} catch (java.lang.Exception e) {
throw new org.apache.avro.AvroRuntimeException(e);
}
}
}
@SuppressWarnings("unchecked")
private static final org.apache.avro.io.DatumWriter<RestaurantApprovalResponseAvroModel>
WRITER$ = (org.apache.avro.io.DatumWriter<RestaurantApprovalResponseAvroModel>)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<RestaurantApprovalResponseAvroModel>
READER$ = (org.apache.avro.io.DatumReader<RestaurantApprovalResponseAvroModel>)MODEL$.createDatumReader(SCHEMA$);
@Override public void readExternal(java.io.ObjectInput in)
throws java.io.IOException {
READER$.read(this, SpecificData.getDecoder(in));
}
}

View File

@@ -0,0 +1,13 @@
/**
* Autogenerated by Avro
*
* DO NOT EDIT DIRECTLY
*/
package com.food.ordering.system.kafka.order.avro.model;
@org.apache.avro.specific.AvroGenerated
public enum RestaurantOrderStatus implements org.apache.avro.generic.GenericEnumSymbol<RestaurantOrderStatus> {
PAID ;
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"enum\",\"name\":\"RestaurantOrderStatus\",\"namespace\":\"com.food.ordering.system.kafka.order.avro.model\",\"symbols\":[\"PAID\"]}");
public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
public org.apache.avro.Schema getSchema() { return SCHEMA$; }
}

View File

@@ -0,0 +1,59 @@
{
"namespace": "com.food.ordering.system.kafka.order.avro.model",
"type": "record",
"name": "PaymentRequestAvroModel",
"fields": [
{
"name": "id",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "sagaId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "customerId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "orderId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "price",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 10,
"scale": 2
}
},
{
"name": "createdAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
}
},
{
"name": "paymentOrderStatus",
"type": {
"type": "enum",
"name": "PaymentOrderStatus",
"symbols": ["PENDING", "CANCELLED"]
}
}
]
}

View File

@@ -0,0 +1,75 @@
{
"namespace": "com.food.ordering.system.kafka.order.avro.model",
"type": "record",
"name": "PaymentResponseAvroModel",
"fields": [
{
"name": "id",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "sagaId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "paymentId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "customerId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "orderId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "price",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 10,
"scale": 2
}
},
{
"name": "createdAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
}
},
{
"name": "paymentStatus",
"type": {
"type": "enum",
"name": "PaymentStatus",
"symbols": ["COMPLETED", "CANCELLED", "FAILED"]
}
},
{
"name": "failureMessages",
"type": {
"type": "array",
"items":{
"type":"string"
}
}
}
]
}

View File

@@ -0,0 +1,73 @@
{
"namespace": "com.food.ordering.system.kafka.order.avro.model",
"type": "record",
"name": "RestaurantApprovalRequestAvroModel",
"fields": [
{
"name": "id",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "sagaId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "restaurantId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "orderId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "restaurantOrderStatus",
"type": {
"type": "enum",
"name": "RestaurantOrderStatus",
"symbols": ["PAID"]
}
},
{
"name": "products",
"type": {
"type": "array",
"items":{
"name":"Product",
"type":"record",
"fields":[
{"name":"id", "type": "string", "logicalType": "uuid"},
{"name":"quantity", "type": "int"}
]
}
}
},
{
"name": "price",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 10,
"scale": 2
}
},
{
"name": "createdAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
}
}
]
}

View File

@@ -0,0 +1,59 @@
{
"namespace": "com.food.ordering.system.kafka.order.avro.model",
"type": "record",
"name": "RestaurantApprovalResponseAvroModel",
"fields": [
{
"name": "id",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "sagaId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "restaurantId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "orderId",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "createdAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
}
},
{
"name": "orderApprovalStatus",
"type": {
"type": "enum",
"name": "OrderApprovalStatus",
"symbols": ["APPROVED", "REJECTED"]
}
},
{
"name": "failureMessages",
"type": {
"type": "array",
"items":{
"type":"string"
}
}
}
]
}

View File

@@ -11,9 +11,38 @@
<artifactId>kafka-producer</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.food.order</groupId>
<artifactId>kafka-model</artifactId>
</dependency>
<dependency>
<groupId>com.food.order</groupId>
<artifactId>kafka-config</artifactId>
</dependency>
<dependency>
<groupId>com.food.order</groupId>
<artifactId>order-core-domain</artifactId>
</dependency>
<dependency>
<groupId>com.food.order</groupId>
<artifactId>common-domain</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,56 @@
package com.food.order.system.kafka.producer;
import com.food.order.kafka.config.data.KafkaConfigData;
import com.food.order.kafka.config.data.KafkaProducerConfigData;
import lombok.RequiredArgsConstructor;
import org.apache.avro.specific.SpecificRecordBase;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@Configuration
@RequiredArgsConstructor
public class KafkaProducerConfig<K extends Serializable, V extends SpecificRecordBase> {
private final KafkaConfigData kafkaConfigData;
private final KafkaProducerConfigData kafkaProducerConfigData;
@Bean
public Map<String, Object> producerConfig(){
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaConfigData.getBootstrapServers());
props.put(kafkaConfigData.getSchemaRegistryUrlKey(), kafkaConfigData.getSchemaRegistryUrl());
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, kafkaProducerConfigData.getKeySerializerClass());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, kafkaProducerConfigData.getValueSerializerClass());
props.put(ProducerConfig.BATCH_SIZE_CONFIG, kafkaProducerConfigData.getBatchSize() *
kafkaProducerConfigData.getBatchSizeBoostFactor());
props.put(ProducerConfig.LINGER_MS_CONFIG, kafkaProducerConfigData.getLingerMs());
props.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, kafkaProducerConfigData.getCompressionType());
props.put(ProducerConfig.ACKS_CONFIG, kafkaProducerConfigData.getAcks());
props.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, kafkaProducerConfigData.getRequestTimeoutMs());
props.put(ProducerConfig.RETRIES_CONFIG, kafkaProducerConfigData.getRetryCount());
return props;
}
@Bean
public ProducerFactory<K,V> producerFactory(){
return new DefaultKafkaProducerFactory<>(producerConfig());
}
@Bean
public KafkaTemplate<K,V> kafkaTemplate(){
return new KafkaTemplate<>(producerFactory());
}
}

View File

@@ -0,0 +1,7 @@
package com.food.order.system.kafka.producer.exception;
public class KafkaProducerException extends RuntimeException{
public KafkaProducerException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,11 @@
package com.food.order.system.kafka.producer.service;
import org.apache.avro.specific.SpecificRecordBase;
import org.springframework.kafka.support.SendResult;
import org.springframework.util.concurrent.ListenableFutureCallback;
import java.io.Serializable;
public interface KafkaProducer<K extends Serializable, V extends SpecificRecordBase> {
void send(String topicName, K key , V message, ListenableFutureCallback<SendResult<K,V>> callback);
}

View File

@@ -0,0 +1,52 @@
package com.food.order.system.kafka.producer.service.impl;
import com.food.order.system.kafka.producer.service.KafkaProducer;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.avro.specific.SpecificRecordBase;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.support.SendResult;
import org.springframework.stereotype.Component;
import org.springframework.util.concurrent.ListenableFutureCallback;
import javax.annotation.PreDestroy;
import java.io.Serializable;
import java.util.Objects;
@Component
@RequiredArgsConstructor
@Slf4j
public class KafkaProducerImpl<K extends Serializable, V extends SpecificRecordBase> implements KafkaProducer<K, V> {
private final KafkaTemplate<K, V> kafkaTemplate;
@Override
public void send(String topicName, K key, V message, ListenableFutureCallback<SendResult<K, V>> callback) {
log.info("Sending message to topic: {}, also message {}", topicName,message);
kafkaTemplate.send(topicName, key, message)
.addCallback(new ListenableFutureCallback<>() {
@Override
public void onFailure(Throwable ex) {
log.error("Error sending message to topic: {}, also message {}", topicName, message, ex);
callback.onFailure(ex);
}
@Override
public void onSuccess(SendResult<K, V> result) {
log.info("Message sent to topic: {}, also message {}", topicName, message);
callback.onSuccess(result);
}
});
}
@PreDestroy
public void destroy() {
log.info("KafkaProducerImpl is being destroyed");
if (Objects.nonNull(kafkaTemplate)) {
kafkaTemplate.destroy();
}
}
}