001package co.codewizards.cloudstore.core.dto.jaxb;
002
003import java.util.ServiceLoader;
004
005import javax.xml.bind.JAXBContext;
006
007/**
008 * {@code CloudStoreJaxbContextProvider} implementations populate the {@link CloudStoreJaxbContext}.
009 * <p>
010 * Implementation classes are registered using the {@link ServiceLoader}.
011 * <p>
012 * <b>Important:</b> Implementors should subclass {@link AbstractCloudStoreJaxbContextProvider} instead
013 * of directly implementing this interface!
014 * @author Marco หงุ่ยตระกูล-Schulze - marco at codewizards dot co
015 */
016public interface CloudStoreJaxbContextProvider {
017        /**
018         * Gets the classes to be bound in the {@link CloudStoreJaxbContext}.
019         * <p>
020         * The classes returned here are combined with all other providers' results and then passed
021         * to {@link JAXBContext#newInstance(Class[])}.
022         * @return the classes to be bound in the {@link CloudStoreJaxbContext}. May be <code>null</code>,
023         * which is equivalent to an empty array.
024         */
025        Class<?>[] getClassesToBeBound();
026}