Add license header for java files
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / onap / msb / apiroute / resources / IuiRouteResource.java
1 /*******************************************************************************
2  * Copyright 2016-2017 ZTE, Inc. and others.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 package org.onap.msb.apiroute.resources;
17
18 import io.swagger.annotations.Api;
19 import io.swagger.annotations.ApiOperation;
20 import io.swagger.annotations.ApiParam;
21 import io.swagger.annotations.ApiResponse;
22 import io.swagger.annotations.ApiResponses;
23
24 import java.net.URI;
25 import java.util.List;
26
27 import javax.ws.rs.DELETE;
28 import javax.ws.rs.DefaultValue;
29 import javax.ws.rs.GET;
30 import javax.ws.rs.POST;
31 import javax.ws.rs.PUT;
32 import javax.ws.rs.Path;
33 import javax.ws.rs.PathParam;
34 import javax.ws.rs.Produces;
35 import javax.ws.rs.QueryParam;
36 import javax.ws.rs.core.Context;
37 import javax.ws.rs.core.MediaType;
38 import javax.ws.rs.core.Response;
39 import javax.ws.rs.core.UriInfo;
40
41 import org.apache.http.HttpStatus;
42 import org.onap.msb.apiroute.api.IuiRouteInfo;
43 import org.onap.msb.apiroute.wrapper.IuiRouteServiceWrapper;
44
45 import com.codahale.metrics.annotation.Timed;
46
47 @Path("/iuiRoute")
48 @Api(tags = { "iuiRoute" })
49 @Produces(MediaType.APPLICATION_JSON)
50 public class IuiRouteResource {
51
52     @Context
53     UriInfo uriInfo; // actual uri info
54
55         @GET
56         @Path("/")
57         @ApiOperation(value = "get all iuiRoute ", code = HttpStatus.SC_OK,response = IuiRouteInfo.class, responseContainer = "List")
58         @ApiResponses(value = {@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get iuiRouteInfo List  fail", response = String.class)})
59     @Produces(MediaType.APPLICATION_JSON)
60         @Timed
61         public List<IuiRouteInfo> getIuiRoutes(@ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
62                 return IuiRouteServiceWrapper.getInstance().getAllIuiRouteInstances(routeWay);
63         }
64
65         @POST
66         @Path("/")
67         @ApiOperation(value = "add one iuiRoute ", code = HttpStatus.SC_CREATED,response = IuiRouteInfo.class)
68         @ApiResponses(value = {
69                            @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable iuiRouteInfo Entity ", response = String.class),
70                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "add iuiRouteInfo fail", response = String.class),
71                            @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Unprocessable iuiRouteInfo JSON REQUEST", response = String.class)})
72     @Produces(MediaType.APPLICATION_JSON)
73         @Timed
74         public Response addIuiRoute(
75                         @ApiParam(value = "iuiRoute Instance Info", required = true) IuiRouteInfo iuiRouteInfo,
76                         @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
77             IuiRouteInfo new_iuiRouteInfo = IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance4Rest(iuiRouteInfo,routeWay);
78             URI returnURI =uriInfo.getAbsolutePathBuilder().path("/" + new_iuiRouteInfo.getServiceName()).build();
79         return Response.created(returnURI).entity(new_iuiRouteInfo).build();
80
81         }
82         
83         @GET
84         @Path("/{serviceName}")
85         @ApiOperation(value = "get one iuiRoute ",code = HttpStatus.SC_OK, response = IuiRouteInfo.class)
86         @ApiResponses(value = {
87                            @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "IuiRouteInfo not found", response = String.class),
88                            @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable IuiRouteInfo Entity ", response = String.class),
89                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "get IuiRouteInfo fail", response = String.class)})
90    @Produces(MediaType.APPLICATION_JSON)
91         @Timed
92         public IuiRouteInfo getIuiRoute(
93                         @ApiParam(value = "iuiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
94                         @ApiParam(value = "iuiRoute host", required = false) @QueryParam("host") String host,
95                         @ApiParam(value = "iuiRoute Publish port", required = false) @QueryParam("publish_port") @DefaultValue("")String publish_port,
96                         @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
97
98                 return IuiRouteServiceWrapper.getInstance().getIuiRouteInstance(serviceName,host,publish_port,routeWay);
99
100         }
101
102         @PUT
103         @Path("/{serviceName}")
104         @ApiOperation(value = "update one iuiRoute by serviceName", code = HttpStatus.SC_CREATED,response = IuiRouteInfo.class)
105         @ApiResponses(value = {
106                            @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable IuiRouteInfo Entity ", response = String.class),
107                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "update IuiRouteInfo fail", response = String.class),
108                            @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Unprocessable IuiRouteInfo JSON REQUEST", response = String.class)})
109     @Produces(MediaType.APPLICATION_JSON)
110         @Timed
111         public Response updateIuiRoute(
112                         @ApiParam(value = "iuiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
113                         @ApiParam(value = "iuiRoute Instance Info", required = true) IuiRouteInfo iuiRouteInfo,
114                         @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
115
116             IuiRouteInfo new_iuiRouteInfo =  IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance4Rest(iuiRouteInfo,routeWay);
117             URI returnURI =uriInfo.getAbsolutePathBuilder().path("/" + serviceName).build();
118         return Response.created(returnURI).entity(new_iuiRouteInfo).build();
119         }
120
121         @DELETE
122         @Path("/{serviceName}")
123         @ApiOperation(value = "delete one iuiRoute by serviceName", code = HttpStatus.SC_NO_CONTENT)
124         @ApiResponses(value = {
125                            @ApiResponse(code = HttpStatus.SC_NO_CONTENT, message = "delete IuiRouteInfo succeed "),
126                            @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "IuiRouteInfo not found", response = String.class),
127                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "delete IuiRouteInfo fail", response = String.class)})
128     @Produces(MediaType.APPLICATION_JSON)
129         @Timed
130         public void deleteIuiRoute(
131                         @ApiParam(value = "iuiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
132                         @ApiParam(value = "iuiRoute host", required = false) @QueryParam("host") String host,
133                         @ApiParam(value = "iuiRoute Publish port", required = false) @QueryParam("publish_port") @DefaultValue("")String publish_port,
134                         @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
135
136                 IuiRouteServiceWrapper.getInstance().deleteIuiRoute(serviceName,host,publish_port,routeWay);
137
138         }
139         
140         @PUT
141         @Path("/{serviceName}/status/{status}")
142         @ApiOperation(value = "update one iuiRoute  status by serviceName ",code = HttpStatus.SC_CREATED, response = IuiRouteInfo.class)
143         @ApiResponses(value = {
144                            @ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable IuiRouteInfo Entity ", response = String.class),
145                            @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = "IuiRouteInfo not found", response = String.class),
146                            @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "update IuiRouteInfo status fail", response = String.class)})
147     @Produces(MediaType.APPLICATION_JSON)
148         @Timed
149         public Response updateIuiRouteStatus(
150                         @ApiParam(value = "iuiRoute serviceName", required = true) @PathParam("serviceName") String serviceName,
151                         @ApiParam(value = "iuiRoute host", required = false) @QueryParam("host") String host,
152                         @ApiParam(value = "iuiRoute status,1:abled  0:disabled", required = true)  @PathParam("status") String status,
153                         @ApiParam(value = "iuiRoute Publish port", required = false) @QueryParam("publish_port") @DefaultValue("")String publish_port,
154                         @ApiParam(value = "Route Way", required = false) @QueryParam("routeWay") @DefaultValue("ip")String routeWay) {
155
156             IuiRouteInfo new_iuiRouteInfo =  IuiRouteServiceWrapper.getInstance().updateIuiRouteStatus(serviceName,host,publish_port,status,routeWay);
157         URI returnURI =uriInfo.getAbsolutePathBuilder().path("/" + serviceName).build();
158         return Response.created(returnURI).entity(new_iuiRouteInfo).build();
159
160         }
161         
162 }