001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.transform.http.responses; 019 020import com.fasterxml.jackson.databind.ObjectMapper; 021import org.slf4j.Logger; 022 023import javax.ws.rs.ext.ContextResolver; 024import javax.ws.rs.ext.Provider; 025 026import java.text.DateFormat; 027import java.text.SimpleDateFormat; 028 029import static org.slf4j.LoggerFactory.getLogger; 030 031/** 032 * This {@link Provider} adds configuration for the serialization of JSON resources. 033 * 034 * @author awoods 035 * @since Feb 9, 2016 036 */ 037@Provider 038public class JsonObjectProvider implements ContextResolver<ObjectMapper> { 039 040 private static final Logger LOGGER = getLogger(JsonObjectProvider.class); 041 042 public static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 043 044 private final ObjectMapper defaultObjectMapper; 045 046 /** 047 * Default constructor 048 */ 049 public JsonObjectProvider() { 050 defaultObjectMapper = createDefaultMapper(); 051 } 052 053 @Override 054 public ObjectMapper getContext(final Class<?> aClass) { 055 LOGGER.debug("Object mapping for: {}", aClass.getCanonicalName()); 056 return defaultObjectMapper; 057 } 058 059 private static ObjectMapper createDefaultMapper() { 060 final ObjectMapper mapper = new ObjectMapper(); 061 mapper.setDateFormat(DATE_FORMAT); 062 063 return mapper; 064 } 065}