package org.jboss.resteasy.plugins.providers.jaxb;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import java.lang.annotation.Annotation;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface JAXBContextFinder
{
/**
* This method with find a JAXBContext for one type. The user can override the cache by defining
* a ContextResolver<JAXBContext> for the given media type.
*
* @param type
* @param mediaType
* @param parameterAnnotations
* @return
* @throws JAXBException
*/
JAXBContext findCachedContext(Class type, MediaType mediaType, Annotation[] parameterAnnotations) throws JAXBException;
/**
* This method creates a JAXBContext from a collection of classes. Unlike the other findCachedContext() method,
* the user cannot override the JAXBContext created.
*
* @param mediaType
* @param paraAnnotations
* @param classes
* @return
* @throws JAXBException
*/
JAXBContext findCacheContext(MediaType mediaType, Annotation[] paraAnnotations, Class... classes) throws JAXBException;
/**
* This method will find a JAXBContext from a set of XmlTypes that use an ObjectFactory for creation (i.e. from xjc)
*
* @param mediaType
* @param paraAnnotations
* @param packages
* @return
* @throws JAXBException
*/
JAXBContext findCacheXmlTypeContext(MediaType mediaType, Annotation[] paraAnnotations, Class... classes) throws JAXBException;
JAXBContext createContext(Annotation[] parameterAnnotations, Class... classes) throws JAXBException;
}