001package co.codewizards.cloudstore.local.persistence;
002
003import java.util.ServiceLoader;
004
005import javax.jdo.PersistenceManager;
006import javax.jdo.annotations.PersistenceCapable;
007
008/**
009 * {@code CloudStorePersistenceCapableClassesProvider} implementations make persistence-capable classes known
010 * to the {@code LocalRepoManagerImpl}'s {@link PersistenceManager}.
011 * <p>
012 * Implementation classes are registered using the {@link ServiceLoader}.
013 * <p>
014 * <b>Important:</b> Implementors should subclass {@link AbstractCloudStorePersistenceCapableClassesProvider} instead
015 * of directly implementing this interface!
016 * @author Marco หงุ่ยตระกูล-Schulze - marco at codewizards dot co
017 */
018public interface CloudStorePersistenceCapableClassesProvider {
019        /**
020         * Gets the {@linkplain PersistenceCapable persistence-capable} classes.
021         * <p>
022         * The classes returned here are combined with all other providers' results.
023         * @return the {@linkplain PersistenceCapable persistence-capable} classes. May be <code>null</code>,
024         * which is equivalent to an empty array.
025         */
026        Class<?>[] getPersistenceCapableClasses();
027}