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