io.smallrye.reactive.messaging.ce.DefaultCloudEventMetadataBuilder Maven / Gradle / Ivy
The newest version!
package io.smallrye.reactive.messaging.ce;
import static io.smallrye.reactive.messaging.ce.CloudEventMetadata.CE_VERSION_1_0;
import java.net.URI;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import io.smallrye.reactive.messaging.ce.impl.BaseCloudEventMetadata;
public final class DefaultCloudEventMetadataBuilder {
private String id;
private String specVersion = CE_VERSION_1_0;
private URI source;
private String type;
private String dataContentType;
private URI dataSchema;
private String subject;
private ZonedDateTime timestamp;
private final Map extensions = new HashMap<>();
private T data;
public DefaultCloudEventMetadataBuilder() {
// Do nothing by default
}
public DefaultCloudEventMetadataBuilder withId(String id) {
this.id = id;
return this;
}
public DefaultCloudEventMetadataBuilder withSpecVersion(String specVersion) {
this.specVersion = specVersion;
return this;
}
public DefaultCloudEventMetadataBuilder withSource(URI source) {
this.source = source;
return this;
}
public DefaultCloudEventMetadataBuilder withType(String type) {
this.type = type;
return this;
}
public DefaultCloudEventMetadataBuilder withDataContentType(String dataContentType) {
this.dataContentType = dataContentType;
return this;
}
public DefaultCloudEventMetadataBuilder withDataSchema(URI dataSchema) {
this.dataSchema = dataSchema;
return this;
}
public DefaultCloudEventMetadataBuilder withSubject(String subject) {
this.subject = subject;
return this;
}
public DefaultCloudEventMetadataBuilder withTimestamp(ZonedDateTime timestamp) {
this.timestamp = timestamp;
return this;
}
public DefaultCloudEventMetadataBuilder withExtensions(Map extensions) {
Objects.requireNonNull(extensions, "The extension map must not be `null`");
this.extensions.putAll(extensions);
return this;
}
public DefaultCloudEventMetadataBuilder withExtension(String name, Object value) {
this.extensions.put(
Objects.requireNonNull(name, "The attribute name must not be `null`"),
Objects.requireNonNull(value, "The attribute value must not be `null`"));
return this;
}
public DefaultCloudEventMetadataBuilder withoutExtension(String name) {
this.extensions.remove(
Objects.requireNonNull(name, "The attribute name must not be `null`"));
return this;
}
public DefaultCloudEventMetadataBuilder withData(T data) {
this.data = data;
return this;
}
public BaseCloudEventMetadata build() {
return new BaseCloudEventMetadata<>(specVersion, id, source, type, dataContentType, dataSchema, subject,
timestamp, extensions, data);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy