org.onosproject.store.service.ConsistentMapBuilder Maven / Gradle / Ivy
package org.onosproject.store.service;
import org.onosproject.core.ApplicationId;
/**
* Builder for consistent maps.
*
* @param type for map key
* @param type for map value
*/
public interface ConsistentMapBuilder {
/**
* Sets the name of the map.
*
* Each consistent map is identified by a unique map name.
*
*
* Note: This is a mandatory parameter.
*
*
* @param name name of the consistent map
* @return this ConsistentMapBuilder
*/
ConsistentMapBuilder withName(String name);
/**
* Sets the owner applicationId for the map.
*
* Note: If {@code purgeOnUninstall} option is enabled, applicationId
* must be specified.
*
*
* @param id applicationId owning the consistent map
* @return this ConsistentMapBuilder
*/
ConsistentMapBuilder withApplicationId(ApplicationId id);
/**
* Sets a serializer that can be used to serialize
* both the keys and values inserted into the map. The serializer
* builder should be pre-populated with any classes that will be
* put into the map.
*
* Note: This is a mandatory parameter.
*
*
* @param serializer serializer
* @return this ConsistentMapBuilder
*/
ConsistentMapBuilder withSerializer(Serializer serializer);
/**
* Disables distribution of map entries across multiple database partitions.
*
* When partitioning is disabled, the returned map will have a single partition
* that spans the entire cluster. Furthermore, the changes made to the map are
* ephemeral and do not survive a full cluster restart.
*
*
* Disabling partitions is more appropriate when the returned map is used for
* coordination activities such as leader election and not for long term data persistence.
*
*
* Note: By default partitions are enabled and entries in the map are durable.
*
* @return this ConsistentMapBuilder
*/
ConsistentMapBuilder withPartitionsDisabled();
/**
* Disables map updates.
*
* Attempt to update the built map will throw {@code UnsupportedOperationException}.
*
* @return this ConsistentMapBuilder
*/
ConsistentMapBuilder withUpdatesDisabled();
/**
* Purges map contents when the application owning the map is uninstalled.
*
* When this option is enabled, the caller must provide a applicationId via
* the {@code withAppliationId} builder method.
*
* By default map entries will NOT be purged when owning application is uninstalled.
*
* @return this ConsistentMapBuilder
*/
ConsistentMapBuilder withPurgeOnUninstall();
/**
* Builds an consistent map based on the configuration options
* supplied to this builder.
*
* @return new consistent map
* @throws java.lang.RuntimeException if a mandatory parameter is missing
*/
ConsistentMap build();
/**
* Builds an async consistent map based on the configuration options
* supplied to this builder.
*
* @return new async consistent map
* @throws java.lang.RuntimeException if a mandatory parameter is missing
*/
AsyncConsistentMap buildAsyncMap();
}