/*
* Copyright (C) 2014 Intel Corporation
* All rights reserved.
*/
package com.intel.mtwilson.jaxrs2.feature;
import com.fasterxml.jackson.jaxrs.base.JsonMappingExceptionMapper;
import com.fasterxml.jackson.jaxrs.base.JsonParseExceptionMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
/**
*
* @author jbuhacoff
*/
public class JacksonFeature implements Feature {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(JacksonFeature.class);
@Override
public boolean configure( final FeatureContext context ) {
log.debug("JacksonFeature configure");
// String postfix = '.' + context.getConfiguration().getRuntimeType().name().toLowerCase(); // this just evaluates to ".server" ... we don't
// using the literal configuration property name instead of the constant in jersey's CommonProperties to avoid having jersey2 as a dependency of this project
context.property( "jersey.config.disableMoxyJson", true ); // CommonProperties.MOXY_JSON_FEATURE_DISABLE
// context.property( "jersey.config.disableMoxyJson.server", true ); // CommonProperties.MOXY_JSON_FEATURE_DISABLE
context.register( JsonParseExceptionMapper.class );
context.register( JsonMappingExceptionMapper.class );
context.register( JacksonJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class );
// should this go in a separate jacksonxmlfeature?
context.register(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class);
context.register(com.fasterxml.jackson.jaxrs.xml.JacksonJaxbXMLProvider.class);
context.register(com.fasterxml.jackson.jaxrs.xml.JacksonXMLProvider.class);
return true;
}
}