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

net.engio.mbassy.bus.config.IBusConfiguration Maven / Gradle / Ivy

package net.engio.mbassy.bus.config;

import net.engio.mbassy.bus.error.IPublicationErrorHandler;

import java.util.Collection;

/**
 * The configuration of message bus instances is feature driven, e.g. configuration parameters
 * are grouped into {@link Feature}.
 *
 * Each bus will look for the features it requires and configure them according to the provided configuration.
 * If a required feature is not found the bus will publish a {@link ConfigurationError}
 * to the {@link ConfigurationErrorHandler}
 *
 * @author bennidi.
 */
public interface IBusConfiguration{

    /**
     * Set a property which will be read by the message bus constructor. Existing value will be overwritten.
     * Null values are supported (checking for existence of property will return true even if set to null).
     *
     * @param name The name of the property. Note: Each implementation may support different properties.
     * @param value The value of the property.
     * @return  A reference to this bus configuration.
     */
    IBusConfiguration setProperty(String name, Object value);

    /**
     * Read a property from this configuration.
     *
     * @param name  The name of the property to be read.
     * @param defaultValue  The value to be returned if property was not found
     * @param   The type of property
     * @return The value associated with the given property name or defaultValue if not present
     */
     T getProperty(String name, T defaultValue);

    /**
     * Check whether a property has been set.
     *
     * @return true if property was set (even if set to null)
     *         false otherwise
     */
    boolean hasProperty(String name);


    /**
     * Get a registered feature by its type (class).
     *
     */
     T getFeature(Class feature);

    /**
     * Add a feature to the given configuration, replacing any existing feature of the same type.
     *
     * @param feature The feature to add
     * @return  A reference to this bus configuration.
     */
    IBusConfiguration addFeature(Feature feature);

    /**
     * Add a handler that will be called whenever a publication error occurs.
     * See {@link net.engio.mbassy.bus.error.PublicationError}
     *
     * @param handler  The handler to be added to the list of handlers
     * @return A reference to this bus configuration.
     */
    BusConfiguration addPublicationErrorHandler(IPublicationErrorHandler handler);

    /**
     * Get an unmodifiable collection of all registered publication error handlers
     */
    Collection getRegisteredPublicationErrorHandlers();


    /**
     * A collection of properties commonly used by different parts of the library.
     *
     * @author bennidi
     *         Date: 22.02.15
     */
    final class Properties {

        public static final String BusId = "bus.id";
        public static final String PublicationErrorHandlers = "bus.handlers.error";
        public static final String AsynchronousHandlerExecutor = "bus.handlers.async-executor";

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy