package nl.knaw.huygens.alexandria.concordion;
/*
* #%L
* alexandria-acceptance-tests
* =======
* Copyright (C) 2015 - 2017 Huygens ING (KNAW)
* =======
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import nl.knaw.huygens.Log;
@Provider
public class JsonConfiguration implements ContextResolver<ObjectMapper> {
private final ObjectMapper defaultObjectMapper;
public JsonConfiguration() {
defaultObjectMapper = createDefaultMapper();
}
@Override
public ObjectMapper getContext(final Class<?> type) {
Log.trace("Returning Jackson ObjectMapper for type: {}", type);
return defaultObjectMapper;
}
private static ObjectMapper createDefaultMapper() {
final ObjectMapper mapper = new ObjectMapper();
Log.debug("Configuring Jackson ObjectMapper: [" + mapper + "]");
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
// mapper.disable(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS);
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
mapper.registerModule(new Jdk8Module());
return mapper;
}
}