2  * Copyright © 2017-2018 AT&T Intellectual Property.
\r 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
\r 
   5  * you may not use this file except in compliance with the License.
\r 
   6  * You may obtain a copy of the License at
\r 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
\r 
  10  * Unless required by applicable law or agreed to in writing, software
\r 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
\r 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r 
  13  * See the License for the specific language governing permissions and
\r 
  14  * limitations under the License.
\r 
  17 package org.onap.ccsdk.apps.controllerblueprints;
\r 
  20 import com.fasterxml.jackson.annotation.JsonInclude;
\r 
  21 import com.fasterxml.jackson.databind.DeserializationFeature;
\r 
  22 import com.fasterxml.jackson.databind.MapperFeature;
\r 
  23 import com.fasterxml.jackson.databind.ObjectMapper;
\r 
  24 import com.fasterxml.jackson.databind.SerializationFeature;
\r 
  25 import io.swagger.jaxrs.config.BeanConfig;
\r 
  26 import io.swagger.jaxrs.listing.ApiListingResource;
\r 
  27 import io.swagger.jaxrs.listing.SwaggerSerializers;
\r 
  28 import org.glassfish.jersey.server.ResourceConfig;
\r 
  29 import org.glassfish.jersey.servlet.ServletProperties;
\r 
  30 import org.onap.ccsdk.apps.controllerblueprints.service.common.ServiceExceptionMapper;
\r 
  31 import org.onap.ccsdk.apps.controllerblueprints.service.rs.ConfigModelRestImpl;
\r 
  32 import org.onap.ccsdk.apps.controllerblueprints.service.rs.ModelTypeRestImpl;
\r 
  33 import org.onap.ccsdk.apps.controllerblueprints.service.rs.ResourceDictionaryRestImpl;
\r 
  34 import org.onap.ccsdk.apps.controllerblueprints.service.rs.ServiceTemplateRestImpl;
\r 
  35 import org.slf4j.Logger;
\r 
  36 import org.slf4j.LoggerFactory;
\r 
  37 import org.springframework.beans.factory.annotation.Autowired;
\r 
  38 import org.springframework.context.annotation.Bean;
\r 
  39 import org.springframework.context.annotation.Primary;
\r 
  40 import org.springframework.stereotype.Component;
\r 
  42 import javax.ws.rs.core.MediaType;
\r 
  47  * @author Brinda Santh
\r 
  50 public class JerseyConfiguration extends ResourceConfig {
\r 
  51     private static Logger log = LoggerFactory.getLogger(JerseyConfiguration.class);
\r 
  56     public JerseyConfiguration() {
\r 
  57         register(ConfigModelRestImpl.class);
\r 
  58         register(ModelTypeRestImpl.class);
\r 
  59         register(ResourceDictionaryRestImpl.class);
\r 
  60         register(ServiceTemplateRestImpl.class);
\r 
  61         register(ServiceExceptionMapper.class);
\r 
  62         property(ServletProperties.FILTER_FORWARD_ON_404, true);
\r 
  68      * @return ObjectMapper
\r 
  72     public ObjectMapper objectMapper() {
\r 
  73         ObjectMapper objectMapper = new ObjectMapper();
\r 
  74         objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
\r 
  75         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
\r 
  76         objectMapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES);
\r 
  77         objectMapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
\r 
  78         objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
\r 
  79         return objectMapper;
\r 
  85     private void configureSwagger() {
\r 
  86         register(ApiListingResource.class);
\r 
  87         register(SwaggerSerializers.class);
\r 
  88         BeanConfig beanConfig = new BeanConfig();
\r 
  89         beanConfig.setVersion("1.0.0");
\r 
  90         beanConfig.setSchemes(new String[]{"http", "https"});
\r 
  91         beanConfig.setBasePath("/api/controller-blueprints/v1");
\r 
  92         beanConfig.setTitle("Controller Blueprints API");
\r 
  93         beanConfig.setDescription("Controller BluePrints API");
\r 
  94         beanConfig.getSwagger().addConsumes(MediaType.APPLICATION_JSON);
\r 
  95         beanConfig.getSwagger().addProduces(MediaType.APPLICATION_JSON);
\r 
  96         beanConfig.setResourcePackage("org.onap.ccsdk.apps.controllerblueprints");
\r 
  97         beanConfig.setPrettyPrint(true);
\r 
  98         beanConfig.setScan(true);
\r