Split music src into music-core and music-rest
[music.git] / music-rest / src / main / java / org / onap / music / JerseyConfig.java
diff --git a/music-rest/src/main/java/org/onap/music/JerseyConfig.java b/music-rest/src/main/java/org/onap/music/JerseyConfig.java
new file mode 100755 (executable)
index 0000000..b64e704
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ *  Copyright (c) 2019 AT&T Intellectual Property
+ * ===================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ * 
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music;
+
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.jaxrs.listing.ApiListingResource;
+import io.swagger.jaxrs.listing.SwaggerSerializers;
+
+import javax.annotation.PostConstruct;
+
+import org.glassfish.jersey.server.ResourceConfig;
+import org.onap.music.conductor.conditionals.RestMusicConditionalAPI;
+import org.onap.music.exceptions.MusicExceptionMapper;
+import org.onap.music.rest.RestMusicDataAPI;
+import org.onap.music.rest.RestMusicHealthCheckAPI;
+import org.onap.music.rest.RestMusicLocksAPI; 
+import org.onap.music.rest.RestMusicQAPI; 
+import org.onap.music.rest.RestMusicTestAPI; 
+import org.onap.music.rest.RestMusicVersionAPI;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component 
+public class JerseyConfig extends ResourceConfig {
+
+    @Value("${spring.jersey.application-path:/}") 
+    private String apiPath;
+
+    public JerseyConfig() { 
+        this.registerEndpoints();
+        register(MusicExceptionMapper.class);
+    } 
+
+    @PostConstruct
+    public void init() {
+        this.configureSwagger();
+    }
+
+    private void registerEndpoints() {
+        register(RestMusicDataAPI.class);
+        register(RestMusicLocksAPI.class); 
+        register(RestMusicConditionalAPI.class); 
+        register(RestMusicQAPI.class); 
+        register(RestMusicTestAPI.class); 
+        register(RestMusicVersionAPI.class);
+        register(RestMusicHealthCheckAPI.class);
+    
+    }
+
+    private void configureSwagger() {
+        // Available at localhost:port/swagger.json
+        this.register(ApiListingResource.class);
+        this.register(SwaggerSerializers.class);
+
+        BeanConfig config = new BeanConfig();
+        config.setConfigId("MUSIC");
+        config.setTitle("MUSIC");
+        config.setVersion("v2");
+        config.setContact("Thomas Nelson");
+        config.setSchemes(new String[] {"http", "https"});
+        config.setBasePath("/MUSIC/rest");
+        config.setResourcePackage("org.onap.music");
+        config.setPrettyPrint(true);
+        config.setScan(true);
+    }
+
+}