Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / onap / msb / apiroute / resources / ApiRouteResource.java
@@ -1,5 +1,5 @@
 /**
- * Copyright 2016 ZTE Corporation.
+ * Copyright 2016 ZTE, Inc. and others.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.openo.msb.resources;
+package org.onap.msb.apiroute.resources;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -22,6 +22,7 @@ import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 
 import java.net.URI;
+import java.util.List;
 
 import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
@@ -31,6 +32,7 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -38,13 +40,14 @@ import javax.ws.rs.core.Response.ResponseBuilder;
 import javax.ws.rs.core.UriInfo;
 
 import org.apache.http.HttpStatus;
-import org.openo.msb.api.ApiRouteInfo;
-import org.openo.msb.api.DiscoverInfo;
-import org.openo.msb.wrapper.ApiRouteServiceWrapper;
-import org.openo.msb.wrapper.CustomRouteServiceWrapper;
-import org.openo.msb.wrapper.IuiRouteServiceWrapper;
-import org.openo.msb.wrapper.util.JacksonJsonUtil;
-import org.openo.msb.wrapper.util.RouteUtil;
+import org.onap.msb.apiroute.api.ApiRouteInfo;
+import org.onap.msb.apiroute.api.DiscoverInfo;
+import org.onap.msb.apiroute.wrapper.ApiRouteServiceWrapper;
+import org.onap.msb.apiroute.wrapper.CustomRouteServiceWrapper;
+import org.onap.msb.apiroute.wrapper.IuiRouteServiceWrapper;
+import org.onap.msb.apiroute.wrapper.util.CommonUtil;
+import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
+import org.onap.msb.apiroute.wrapper.util.JacksonJsonUtil;
 
 import com.codahale.metrics.annotation.Timed;
 
@@ -62,25 +65,24 @@ public class ApiRouteResource {
     @ApiResponses(value = {@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get ApiRouteInfo List  fail", response = String.class)})
        @Produces(MediaType.APPLICATION_JSON)
        @Timed
-       public ApiRouteInfo[] getApiRoutes() {
-               return ApiRouteServiceWrapper.getInstance().getAllApiRouteInstances();
+       public List<ApiRouteInfo> getApiRoutes(@ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
+               return ApiRouteServiceWrapper.getInstance().getAllApiRouteInstances(routeWay);
        }
 
        @POST
        @Path("/")
        @ApiOperation(value = "add one ApiRoute ", code = HttpStatus.SC_CREATED,response = ApiRouteInfo.class)
        @ApiResponses(value = {
-                           @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
+                           @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "add ApiRouteInfo fail", response = String.class),
                            @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Unprocessable ApiRouteInfo JSON REQUEST", response = String.class)})
     @Produces(MediaType.APPLICATION_JSON)
        @Timed
        public Response addApiRoute(
-                       @ApiParam(value = "ApiRoute Instance Info", required = true) ApiRouteInfo apiRouteInfo) {
-           ApiRouteInfo new_apiRouteInfo = ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfo,"");
-           URI returnURI =
-                uriInfo.getAbsolutePathBuilder()
-                        .path("/" + new_apiRouteInfo.getServiceName()+"/version/"+new_apiRouteInfo.getVersion()).build();
+                       @ApiParam(value = "ApiRoute Instance Info", required = true) ApiRouteInfo apiRouteInfo,
+                       @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
+           ApiRouteInfo new_apiRouteInfo = ApiRouteServiceWrapper.getInstance().saveApiRouteInstance4Rest(apiRouteInfo,routeWay);
+           URI returnURI = uriInfo.getAbsolutePathBuilder().path("/" + new_apiRouteInfo.getServiceName()+"/version/"+new_apiRouteInfo.getVersion()).build();
         return Response.created(returnURI).entity(new_apiRouteInfo).build();
 
        }
@@ -90,15 +92,18 @@ public class ApiRouteResource {
        @ApiOperation(value = "get one ApiRoute ",code = HttpStatus.SC_OK, response = ApiRouteInfo.class)
        @ApiResponses(value = {
                            @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "ApiRouteInfo not found", response = String.class),
-                           @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
+                           @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get ApiRouteInfo fail", response = String.class)})
     @Produces(MediaType.APPLICATION_JSON)
        @Timed
        public ApiRouteInfo getApiRoute(
                        @ApiParam(value = "ApiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
-                       @ApiParam(value = "ApiRoute version,if the version is empty, please enter \"null\"", required = false) @PathParam("version") @DefaultValue("") String version) {
+                       @ApiParam(value = "ApiRoute version,if the version is empty, please enter \"null\"", required = false) @PathParam("version") @DefaultValue("") String version,
+               @ApiParam(value = "ApiRoute host", required = false) @QueryParam("host") String host,
+               @ApiParam(value = "ApiRoute Publish port", required = false) @QueryParam("publish_port") @DefaultValue("")String publish_port,
+               @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
 
-               return ApiRouteServiceWrapper.getInstance().getApiRouteInstance(serviceName,version);
+               return ApiRouteServiceWrapper.getInstance().getApiRouteInstance(serviceName,version,host,publish_port,routeWay);
 
        }
 
@@ -106,7 +111,7 @@ public class ApiRouteResource {
        @Path("/{serviceName}/version/{version}")
        @ApiOperation(value = "update one ApiRoute by serviceName and version",  code = HttpStatus.SC_CREATED,response = ApiRouteInfo.class)
        @ApiResponses(value = {
-                           @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
+                           @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "update ApiRouteInfo fail", response = String.class),
                            @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Unprocessable ApiRouteInfo JSON REQUEST", response = String.class)})
     @Produces(MediaType.APPLICATION_JSON)
@@ -114,12 +119,11 @@ public class ApiRouteResource {
        public Response updateApiRoute(
                        @ApiParam(value = "ApiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
                        @ApiParam(value = "ApiRoute version,if the version is empty, please enter \"null\"", required = false) @PathParam("version") @DefaultValue("") String version,
-                       @ApiParam(value = "ApiRoute Instance Info", required = true) ApiRouteInfo apiRouteInfo) {
+                       @ApiParam(value = "ApiRoute Instance Info", required = true) ApiRouteInfo apiRouteInfo,
+                       @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
 
-               ApiRouteInfo new_apiRouteInfo = ApiRouteServiceWrapper.getInstance().updateApiRouteInstance(serviceName,version,apiRouteInfo,"");
-        URI returnURI =
-                uriInfo.getAbsolutePathBuilder()
-                        .path("/" + new_apiRouteInfo.getServiceName()+"/version/"+new_apiRouteInfo.getVersion()).build();
+               ApiRouteInfo new_apiRouteInfo = ApiRouteServiceWrapper.getInstance().saveApiRouteInstance4Rest(apiRouteInfo,routeWay);
+        URI returnURI =uriInfo.getAbsolutePathBuilder().path("/" + new_apiRouteInfo.getServiceName()+"/version/"+new_apiRouteInfo.getVersion()).build();
         return Response.created(returnURI).entity(new_apiRouteInfo).build();
 
        }
@@ -137,11 +141,12 @@ public class ApiRouteResource {
        @Timed
        public void deleteApiRoute(
                        @ApiParam(value = "ApiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
-                       @ApiParam(value = "ApiRoute version,if the version is empty, please enter \"null\"", required = false) @PathParam("version") @DefaultValue("")  String version) {
-
-               
-                ApiRouteServiceWrapper.getInstance().deleteApiRoute(serviceName, version,"*","");
+                       @ApiParam(value = "ApiRoute version,if the version is empty, please enter \"null\"", required = false) @PathParam("version") @DefaultValue("")  String version,
+                       @ApiParam(value = "ApiRoute host", required = false) @QueryParam("host") String host,
+                       @ApiParam(value = "ApiRoute Publish port", required = false) @QueryParam("publish_port") @DefaultValue("")String publish_port,
+                       @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
 
+                ApiRouteServiceWrapper.getInstance().deleteApiRoute(serviceName, version,host,publish_port,routeWay);
        }
        
 
@@ -153,22 +158,9 @@ public class ApiRouteResource {
        @Timed
        public String[] getApiDocs() {
 
-               String[] apiDocs = ApiRouteServiceWrapper.getInstance().getAllApiDocs();
-               return apiDocs;
-
+         return ApiRouteServiceWrapper.getInstance().getAllApiDocs();
        }
-       
-       @GET
-       @Path("/apiGatewayPort")
-       @ApiOperation(value = "get apiGateway Port ", code = HttpStatus.SC_OK, response = String.class)
-    @ApiResponses(value = {@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get apiGateway Port  fail", response = String.class)})
-       @Produces(MediaType.TEXT_PLAIN)
-       @Timed
-       public String getApiGatewayPort() {
-
-           return ApiRouteServiceWrapper.getInstance().getApiGatewayPort();
 
-       }
        
        @GET
     @Path("/discoverInfo")
@@ -178,14 +170,14 @@ public class ApiRouteResource {
     @Timed
     public DiscoverInfo getServiceDiscoverInfo() {
 
-           return ApiRouteServiceWrapper.getInstance().getServiceDiscoverInfo();
+           return ConfigUtil.getInstance().getDiscoverInfo();
     }
        
        @PUT
        @Path("/{serviceName}/version/{version}/status/{status}")
        @ApiOperation(value = "update one ApiRoute  status by serviceName and version", code = HttpStatus.SC_CREATED,response = ApiRouteInfo.class)
        @ApiResponses(value = {
-                            @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
+                            @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable ApiRouteInfo Entity ", response = String.class),
                             @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "ApiRouteInfo not found", response = String.class),
                             @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "update status fail", response = String.class)})
     @Produces(MediaType.APPLICATION_JSON)
@@ -193,9 +185,12 @@ public class ApiRouteResource {
        public Response updateApiRouteStatus(
                        @ApiParam(value = "ApiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
                        @ApiParam(value = "ApiRoute version,if the version is empty, please enter \"null\"", required = false) @PathParam("version") @DefaultValue("") String version,
-                       @ApiParam(value = "ApiRoute status,1:abled  0:disabled", required = true)  @PathParam("status") String status) {
+                       @ApiParam(value = "ApiRoute status,1:abled  0:disabled", required = true)  @PathParam("status") String status,
+                       @ApiParam(value = "ApiRoute host", required = false) @QueryParam("host") String host,
+                       @ApiParam(value = "ApiRoute Publish port", required = false) @QueryParam("publish_port") @DefaultValue("")String publish_port,
+                       @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
 
-           ApiRouteInfo new_apiRouteInfo =  ApiRouteServiceWrapper.getInstance().updateApiRouteStatus(serviceName,version,status);
+           ApiRouteInfo new_apiRouteInfo =  ApiRouteServiceWrapper.getInstance().updateApiRouteStatus(serviceName,version,host,publish_port,status,routeWay);
         return Response.created(uriInfo.getAbsolutePathBuilder().build()).entity(new_apiRouteInfo).build();
 
        }
@@ -207,24 +202,10 @@ public class ApiRouteResource {
                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "export fail", response = String.class),
                            @ApiResponse(code = HttpStatus.SC_NOT_ACCEPTABLE, message = " not Acceptable client-side", response = String.class)})
        @Produces(MediaType.TEXT_PLAIN)  
-    public Response  exportService() throws Exception {
-        
-           
-           Object[] apirouteArray= ApiRouteServiceWrapper.getInstance().getAllApiRouteInstances();
-           Object[] iuirouteArray= IuiRouteServiceWrapper.getInstance().getAllIuiRouteInstances();
-           Object[] customrouteArray= CustomRouteServiceWrapper.getInstance().getAllCustomRouteInstances();
-           
-           Object[] temprouteArray =RouteUtil.concat(apirouteArray, iuirouteArray);
-           Object[] allrouteArray=RouteUtil.concat(temprouteArray, customrouteArray);
-           
-          
-        String allrouteJson=JacksonJsonUtil.beanToJson(allrouteArray);
-        
-        ResponseBuilder response = Response.ok(allrouteJson);   
-        response.header("Content-Disposition",   
-            "attachment; filename=\"RouteService.json\"");   
-        return response.build(); 
-       
+    public Response  exportService(@ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) throws Exception {
+
+           ResponseBuilder response = Response.ok( ApiRouteServiceWrapper.getInstance().getAllrouteByJson(routeWay));   
+        return response.header("Content-Disposition", "attachment; filename=\"RouteService.json\"").build();   
 
     }