package org.jboss.resteasy.test.providers.atom.resource;

import org.jboss.resteasy.logging.Logger;
import org.jboss.resteasy.plugins.providers.atom.Entry;
import org.jboss.resteasy.spi.interception.DecoratorProcessor;

import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.annotation.Annotation;

public class AtomComplexModelAtomAssetMetadtaProcessor implements DecoratorProcessor<Marshaller, AtomComplexModelAtomAssetMetadataDecorators> {

   private static Logger logger = Logger.getLogger(AtomComplexModelAtomAssetMetadtaProcessor.class);

   @Override
   public Marshaller decorate(Marshaller target, AtomComplexModelAtomAssetMetadataDecorators annotation, Class type, Annotation[] annotations, MediaType mediaType) {
      Class[] classes = new Class[]{AtomAssetMetadata.class, Entry.class};
      try {
         JAXBContext jaxbContext = JAXBContext.newInstance(classes);
         return jaxbContext.createMarshaller();
      } catch (Exception e) {

         StringWriter errors = new StringWriter();
         e.printStackTrace(new PrintWriter(errors));
         logger.error(errors.toString());
      }
      return null;
   }
}
