a3b0faf0ceab1f9b76916354babf3556897cb6e3
[ccsdk/cds.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\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
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\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
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints;\r
18 \r
19 \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
41 \r
42 import javax.ws.rs.core.MediaType;\r
43 \r
44 /**\r
45  *\r
46  *\r
47  * @author Brinda Santh\r
48  */\r
49 @Component\r
50 public class JerseyConfiguration extends ResourceConfig {\r
51     private static Logger log = LoggerFactory.getLogger(JerseyConfiguration.class);\r
52     /**\r
53      *\r
54      */\r
55     @Autowired\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
63         configureSwagger();\r
64     }\r
65 \r
66     /**\r
67      *\r
68      * @return ObjectMapper\r
69      */\r
70     @Bean\r
71     @Primary\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
80     }\r
81 \r
82     /**\r
83      *\r
84      */\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
99     }\r
100 \r
101 \r
102 }