org.daisy.dotify.api.writer.PagedMediaWriterFactoryService Maven / Gradle / Ivy
package org.daisy.dotify.api.writer;
import java.util.Collection;
/**
*
* Provides an interface for a PagedMediaWriterFactory service. The purpose of this
* interface is to expose an implementation of a PagedMediaWriterFactory as a
* service.
*
*
*
* To comply with this interface, an implementation must be thread safe and
* address both the possibility that only a single instance is created and used
* throughout and that new instances are created as desired.
*
*
* @author Joel Håkansson
*/
public interface PagedMediaWriterFactoryService {
/**
* Returns true if this instance can create instances for the specified
* mediaType.
*
* @param mediaType a valid Internet media type
* @return returns true if the specified locale is supported, false
* otherwise
*/
public boolean supportsMediaType(String mediaType);
/**
* Lists supported media types.
*
* @return returns a list of supported media types
*/
public Collection listMediaTypes();
/**
* Creates a new paged media writer factory for the specified
* media type.
*
* @param mediaType the media type.
* @return returns a new factory
*/
public PagedMediaWriterFactory newFactory(String mediaType);
/**
* Informs the implementation that it was discovered and instantiated using
* information collected from a file within the META-INF/services
directory.
* In other words, it was created using SPI (service provider interfaces).
*
* This information, in turn, enables the implementation to use the same mechanism
* to set dependencies as needed.
*
* If this information is not given, an implementation
* should avoid using SPIs and instead use
* declarative services
* for dependency injection as specified by OSGi. Note that this also applies to
* several newInstance() methods in the Java API.
*
* The class that created an instance with SPI must call this method before
* putting it to use.
*/
public default void setCreatedWithSPI() {
}
}