package co.codewizards.cloudstore.local.persistence;
import java.util.ServiceLoader;
import javax.jdo.PersistenceManager;
import javax.jdo.annotations.PersistenceCapable;
/**
* {@code CloudStorePersistenceCapableClassesProvider} implementations make persistence-capable classes known
* to the {@code LocalRepoManagerImpl}'s {@link PersistenceManager}.
* <p>
* Implementation classes are registered using the {@link ServiceLoader}.
* <p>
* <b>Important:</b> Implementors should subclass {@link AbstractCloudStorePersistenceCapableClassesProvider} instead
* of directly implementing this interface!
* @author Marco หงุ่ยตระกูล-Schulze - marco at codewizards dot co
*/
public interface CloudStorePersistenceCapableClassesProvider {
/**
* Gets the {@linkplain PersistenceCapable persistence-capable} classes.
* <p>
* The classes returned here are combined with all other providers' results.
* @return the {@linkplain PersistenceCapable persistence-capable} classes. May be <code>null</code>,
* which is equivalent to an empty array.
*/
Class<?>[] getPersistenceCapableClasses();
}