All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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