package io.swagger.resources;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import javax.servlet.ServletConfig;
import javax.ws.rs.GET;
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.Request;
@Path("/resource/{id}")
@Api(value = "/resource", description = "Summary of injections resource")
@Produces({"application/json", "application/xml"})
public class ResourceWithKnownInjections {
private Integer constructorParam;
@QueryParam("fieldParam")
private String fieldParam; // injection into a class field
@ApiParam(hidden = true)
@QueryParam("hiddenParam")
private String hiddenParam;
// injection into a constructor parameter
public ResourceWithKnownInjections(@PathParam("id") Integer constructorParam,
@ApiParam(hidden = true) @QueryParam("hiddenParam") String hiddenParam,
@Context ServletConfig context) {
this.constructorParam = constructorParam;
}
private ResourceWithKnownInjections(@PathParam("id") Integer constructorParam, @QueryParam("fakeParam") String
fakeParam) {
this.constructorParam = constructorParam;
}
@GET
public String get(@QueryParam("methodParam") String methodParam) {
// injection into a resource method parameter
final StringBuilder sb = new StringBuilder();
sb.append("Constructor param: ").append(constructorParam).append("\n");
sb.append("Field param: ").append(fieldParam).append("\n");
sb.append("Method param: ").append(methodParam).append("\n");
return sb.toString();
}
@Path("/subresource1")
public SubResource1 subResourceLocator1(@QueryParam("subResourceParam") String subResourceParam) {
// injection into a sub resource locator parameter
return new SubResource1(subResourceParam);
}
@Path("/subresource2")
public Class<SubResource2> subResourceLocator2(@QueryParam("subResourceParam") String subResourceParam) {
// injection into a sub resource locator parameter
return SubResource2.class;
}
@Path("/subresource3")
public Class<SubResource3> subResourceLocator3(@QueryParam("subResourceParam") String subResourceParam) {
// injection into a sub resource locator parameter
return SubResource3.class;
}
@Context
public void setRequest(Request request) {
// injection into a setter method
}
@Api(description = "Sub resource 1")
public static class SubResource1 {
private String subResourceParam;
public SubResource1(String subResourceParam) {
this.subResourceParam = subResourceParam;
}
@GET
public String get() {
final StringBuilder sb = new StringBuilder();
sb.append("Sub Resource: ").append(subResourceParam);
return sb.toString();
}
}
@Api(description = "Sub resource 2")
public static class SubResource2 {
private String subResourceParam;
public SubResource2(@QueryParam("subConstructorParam") String subResourceParam) {
this.subResourceParam = subResourceParam;
}
@GET
public String get() {
final StringBuilder sb = new StringBuilder();
sb.append("Sub Resource: ").append(subResourceParam);
return sb.toString();
}
}
@Api(description = "Sub resource 3")
public class SubResource3 {
private String subResourceParam;
public SubResource3(@QueryParam("subConstructorParam") String subResourceParam) {
this.subResourceParam = subResourceParam;
}
@GET
public String get() {
final StringBuilder sb = new StringBuilder();
sb.append("Sub Resource: ").append(subResourceParam);
return sb.toString();
}
}
}