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

io.smallrye.reactive.messaging.providers.extension.LegacyEmitterImpl Maven / Gradle / Ivy

package io.smallrye.reactive.messaging.providers.extension;

import static io.smallrye.reactive.messaging.providers.i18n.ProviderExceptions.ex;

import java.util.concurrent.Flow.Publisher;

import org.eclipse.microprofile.reactive.messaging.Message;

import io.smallrye.reactive.messaging.MessagePublisherProvider;
import io.smallrye.reactive.messaging.annotations.Emitter;

/**
 * Implementation of the old (legacy) Emitter interface.
 * This implementation delegates to the new implementation.
 *
 * @param  the type of payload or message
 */
@SuppressWarnings("deprecation")
public class LegacyEmitterImpl implements Emitter, MessagePublisherProvider {

    private final EmitterImpl delegate;

    LegacyEmitterImpl(EmitterImpl delegate) {
        this.delegate = delegate;
    }

    @Override
    public Publisher> getPublisher() {
        return delegate.getPublisher();
    }

    @Override
    public void complete() {
        delegate.complete();
    }

    @Override
    public void error(Exception e) {
        delegate.error(e);
    }

    @Override
    public boolean isCancelled() {
        return delegate.isCancelled();
    }

    @Override
    public boolean isRequested() {
        return delegate.hasRequests();
    }

    @Override
    public synchronized Emitter send(T msg) {
        if (msg == null) {
            throw ex.illegalArgumentForNullValue();
        }
        if (msg instanceof Message) {
            delegate.send((Message) msg);
        } else {
            delegate.send(Message.of(msg));
        }
        return this;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy