ffb7924ddeefc5eefc2e21eaec71c2667fd35e42
[msb/apigateway.git] / msb-core / apiroute / apiroute-service / src / main / java / org / openo / msb / resources / CustomRouteResource.java
1 /**\r
2  * Copyright 2016 ZTE, Inc. and others.\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 package org.openo.msb.resources;\r
17 \r
18 import io.swagger.annotations.Api;\r
19 import io.swagger.annotations.ApiOperation;\r
20 import io.swagger.annotations.ApiParam;\r
21 import io.swagger.annotations.ApiResponse;\r
22 import io.swagger.annotations.ApiResponses;\r
23 \r
24 import java.net.URI;\r
25 \r
26 import javax.ws.rs.DELETE;\r
27 import javax.ws.rs.GET;\r
28 import javax.ws.rs.POST;\r
29 import javax.ws.rs.PUT;\r
30 import javax.ws.rs.Path;\r
31 import javax.ws.rs.Produces;\r
32 import javax.ws.rs.QueryParam;\r
33 import javax.ws.rs.core.Context;\r
34 import javax.ws.rs.core.MediaType;\r
35 import javax.ws.rs.core.Response;\r
36 import javax.ws.rs.core.UriInfo;\r
37 \r
38 import org.apache.http.HttpStatus;\r
39 import org.openo.msb.api.CustomRouteInfo;\r
40 import org.openo.msb.wrapper.CustomRouteServiceWrapper;\r
41 \r
42 import com.codahale.metrics.annotation.Timed;\r
43 \r
44 @Path("/customRoute")\r
45 @Api(tags = { "CustomRoute" })\r
46 @Produces(MediaType.APPLICATION_JSON)\r
47 public class CustomRouteResource {\r
48         \r
49     @Context\r
50     UriInfo uriInfo; // actual uri info\r
51     \r
52         @GET\r
53         @Path("/all")\r
54         @ApiOperation(value = "get all CustomRoute ",  code = HttpStatus.SC_OK,response = CustomRouteInfo.class, responseContainer = "List")\r
55     @ApiResponses(value = {@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get CustomRouteInfo List  fail", response = String.class)})\r
56         @Produces(MediaType.APPLICATION_JSON)\r
57         @Timed\r
58         public CustomRouteInfo[] getCustomRoutes() {\r
59                 return CustomRouteServiceWrapper.getInstance().getAllCustomRouteInstances();\r
60         }\r
61         \r
62         @POST\r
63         @Path("/instance")\r
64         @ApiOperation(value = "add one CustomRoute ", code = HttpStatus.SC_CREATED,response = CustomRouteInfo.class)\r
65         @ApiResponses(value = {\r
66                                @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable CustomRouteInfo Entity ", response = String.class),\r
67                                @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "add CustomRouteInfo fail", response = String.class),\r
68                                @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Unprocessable CustomRouteInfo JSON REQUEST", response = String.class)})\r
69         @Produces(MediaType.APPLICATION_JSON)\r
70         @Timed\r
71         public Response addCustomRoute(\r
72                         @ApiParam(value = "CustomRoute Instance Info", required = true) CustomRouteInfo customRouteInfo) {\r
73             CustomRouteInfo new_customRouteInfo = CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfo,"");\r
74             URI returnURI =\r
75                 uriInfo.getAbsolutePathBuilder()\r
76                         .path("/instance?serviceName=" + new_customRouteInfo.getServiceName()).build();\r
77         return Response.created(returnURI).entity(new_customRouteInfo).build();\r
78 \r
79         }\r
80         \r
81         @GET\r
82         @Path("/instance")\r
83         @ApiOperation(value = "get one CustomRoute ",code = HttpStatus.SC_OK,  response = CustomRouteInfo.class)\r
84         @ApiResponses(value = {\r
85                                 @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "CustomRoute not found", response = String.class),\r
86                                 @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable CustomRoute Entity ", response = String.class),\r
87                                 @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get CustomRoute fail", response = String.class)})\r
88         @Produces(MediaType.APPLICATION_JSON)\r
89         @Timed\r
90         public CustomRouteInfo getCustomRoute(\r
91                         @ApiParam(value = "CustomRoute serviceName", required = false) @QueryParam("serviceName") String serviceName) {\r
92             \r
93          \r
94                 return CustomRouteServiceWrapper.getInstance().getCustomRouteInstance(serviceName);\r
95 \r
96         }\r
97         \r
98         @PUT\r
99         @Path("/instance")\r
100         @ApiOperation(value = "update one CustomRoute by serviceName",  code = HttpStatus.SC_CREATED,response = CustomRouteInfo.class)\r
101         @ApiResponses(value = {\r
102                                @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable CustomRoute Entity ", response = String.class),\r
103                                @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "update CustomRoute fail", response = String.class),\r
104                                @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Unprocessable CustomRoute JSON REQUEST", response = String.class)})\r
105         @Produces(MediaType.APPLICATION_JSON)\r
106         @Timed\r
107         public Response updateCustomRoute(\r
108                         @ApiParam(value = "CustomRoute serviceName", required = true) @QueryParam("serviceName") String serviceName,\r
109                         @ApiParam(value = "CustomRoute Instance Info", required = true) CustomRouteInfo customRoute) {\r
110 \r
111             CustomRouteInfo new_customRouteInfo= CustomRouteServiceWrapper.getInstance().updateCustomRouteInstance(serviceName,customRoute,"");\r
112 \r
113         return Response.created(uriInfo.getAbsolutePathBuilder().build()).entity(new_customRouteInfo).build();\r
114 \r
115         }\r
116 \r
117         @DELETE\r
118         @Path("/instance")\r
119         @ApiOperation(value = "delete one CustomRoute by serviceName",  code = HttpStatus.SC_NO_CONTENT)\r
120         @ApiResponses(value = {\r
121                                 @ApiResponse(code = HttpStatus.SC_NO_CONTENT, message = "delete customRoute succeed "),\r
122                                 @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "customRoute not found", response = String.class),\r
123                                 @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "delete customRoute fail", response = String.class)})\r
124         @Produces(MediaType.APPLICATION_JSON)\r
125         @Timed\r
126         public void deleteCustomRoute(\r
127                         @ApiParam(value = "CustomRoute serviceName", required = true) @QueryParam("serviceName") String serviceName) {\r
128 \r
129                  CustomRouteServiceWrapper.getInstance().deleteCustomRoute(serviceName,"*","");\r
130 \r
131         }\r
132         \r
133         @PUT\r
134         @Path("/status")\r
135         @ApiOperation(value = "update one CustomRoute  status by serviceName ",code = HttpStatus.SC_CREATED, response = CustomRouteInfo.class)\r
136     @ApiResponses(value = {\r
137                                 @ApiResponse(code = HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE, message = "Unprocessable customRoute Entity ", response = String.class),\r
138                                 @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "customRoute not found", response = String.class),\r
139                                 @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "update status fail", response = String.class)})\r
140         @Produces(MediaType.APPLICATION_JSON)\r
141         @Timed\r
142         public Response updateCustomRouteStatus(\r
143                         @ApiParam(value = "CustomRoute serviceName", required = true) @QueryParam("serviceName") String serviceName,\r
144                         @ApiParam(value = "CustomRoute status,1:abled  0:disabled", required = true)  @QueryParam("status") String status) {\r
145 \r
146             CustomRouteInfo new_customRouteInfo = CustomRouteServiceWrapper.getInstance().updateCustomRouteStatus(serviceName,status);\r
147         return Response.created(uriInfo.getAbsolutePathBuilder().build()).entity(new_customRouteInfo).build();\r
148 \r
149 \r
150         }\r
151 \r
152 }\r