Stardust provides a repository provider to allow implementing arbitrary repository technologies. By implementing the IRepositoryProvider service provider interface and registering it via the ServiceLocator contract at META-INF/services/org.eclipse.stardust.engine.core.spi.dms.IRepositoryProvider$Factory new Providers can be supplied.
@SPI(status = Status.Experimental, useRestriction = UseRestriction.Public)
public interface IRepositoryProvider
{
public interface Factory
{
IRepositoryProvider getInstance();
}
public String getProviderId();
public List<IRepositoryConfiguration> getDefaultConfigurations();
public IRepositoryInstance createInstance(IRepositoryConfiguration configuration,
String partitionId);
public void destroyInstance(IRepositoryInstance instance);
public IRepositoryProviderInfo getProviderInfo();
}
This SPI allows to implement the IRepositoryProvider as an access layer for arbitrary repository technologies.
The IRepositoryProvider is loaded as part of the SPI contract.
A IRepositoryInstance is usually located via a distinct URL or jndiName and is created and destroyed at runtime using the following methods:
A IRepositoryService usually represents a session on the IRepositoryInstance and contains all methods needed for repository operations.
If a configuration is supplied via getDefaultConfigurations(), the repository instances are created after the provider is loaded.