Skip to content

Commit 62ec3d2

Browse files
committed
Revert "Modularization: removing old src. See #5"
This reverts commit 533435a.
1 parent 533435a commit 62ec3d2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+4373
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package uk.ac.open.kmi.basil;
2+
3+
import java.net.HttpURLConnection;
4+
import java.net.URI;
5+
6+
import javax.servlet.ServletContext;
7+
import javax.ws.rs.WebApplicationException;
8+
import javax.ws.rs.core.Context;
9+
import javax.ws.rs.core.HttpHeaders;
10+
import javax.ws.rs.core.Response;
11+
import javax.ws.rs.core.Response.ResponseBuilder;
12+
import javax.ws.rs.core.UriInfo;
13+
14+
import uk.ac.open.kmi.basil.store.Store;
15+
16+
public class AbstractResource {
17+
18+
@Context
19+
protected HttpHeaders requestHeaders;
20+
21+
@Context
22+
protected UriInfo requestUri;
23+
24+
@Context
25+
protected ServletContext context;
26+
27+
protected final ResponseBuilder addHeaders(ResponseBuilder builder,
28+
String id) {
29+
URI api = requestUri.getBaseUriBuilder().path(id).path("api").build();
30+
URI spec = requestUri.getBaseUriBuilder().path(id).path("spec").build();
31+
// URI store = requestUri.getBaseUriBuilder().path(id).path("store")
32+
// .build();
33+
URI views = requestUri.getBaseUriBuilder().path(id).path("view")
34+
.build();
35+
URI swagger = requestUri.getBaseUriBuilder().path(id).path("api-docs")
36+
.build();
37+
URI docs = requestUri.getBaseUriBuilder().path(id).path("docs")
38+
.build();
39+
builder.header(Headers.Api, api);
40+
builder.header(Headers.Spec, spec);
41+
// builder.header(Headers.Store, store); XXX Not implemented Yet
42+
builder.header(Headers.View, views);
43+
builder.header(Headers.Docs, docs);
44+
builder.header(Headers.Swagger, swagger);
45+
return builder;
46+
}
47+
48+
protected final String getParameterOrHeader(String parameter,
49+
boolean mandatory) {
50+
String value = requestUri.getQueryParameters().getFirst(parameter);
51+
if (value == null) {
52+
if (requestHeaders.getHeaderString(Headers.getHeader(parameter)) == null) {
53+
throw new WebApplicationException(Response
54+
.status(HttpURLConnection.HTTP_BAD_REQUEST)
55+
.header(Headers.Error,
56+
Headers.getHeader(parameter)
57+
+ " (or query parameter '" + parameter
58+
+ "') missing.").build());
59+
} else {
60+
value = requestHeaders.getHeaderString(Headers
61+
.getHeader(parameter));
62+
}
63+
}
64+
return value;
65+
}
66+
67+
protected Store getDataStore() {
68+
return (Store) context.getAttribute(BasilApplication.Registry.Store);
69+
}
70+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package uk.ac.open.kmi.basil;
2+
3+
import java.io.IOException;
4+
5+
import javax.ws.rs.GET;
6+
import javax.ws.rs.Path;
7+
import javax.ws.rs.PathParam;
8+
import javax.ws.rs.Produces;
9+
import javax.ws.rs.WebApplicationException;
10+
import javax.ws.rs.core.Response;
11+
import javax.ws.rs.core.Response.ResponseBuilder;
12+
13+
import org.json.simple.JSONObject;
14+
15+
import uk.ac.open.kmi.basil.doc.Doc;
16+
import uk.ac.open.kmi.basil.sparql.Specification;
17+
import uk.ac.open.kmi.basil.store.Store;
18+
import uk.ac.open.kmi.basil.swagger.SwaggerJsonBuilder;
19+
20+
import com.wordnik.swagger.annotations.Api;
21+
import com.wordnik.swagger.annotations.ApiOperation;
22+
import com.wordnik.swagger.annotations.ApiResponse;
23+
import com.wordnik.swagger.annotations.ApiResponses;
24+
25+
26+
@Path("{id:([^/]+)}/api-docs")
27+
@Api(value = "/basil", description = "BASIL operations")
28+
public class ApiDocsResource extends AbstractResource {
29+
30+
@GET
31+
@Produces("application/json")
32+
@ApiOperation(value = "Generates API Swagger Description")
33+
@ApiResponses(value = {
34+
@ApiResponse(code = 200, message = "OK"),
35+
@ApiResponse(code = 500, message = "Internal error")
36+
})
37+
public Response get(@PathParam("id") String id) {
38+
try {
39+
Store store = getDataStore();
40+
if (!store.existsSpec(id)) {
41+
return Response.status(404).build();
42+
}
43+
44+
Specification specification = store.loadSpec(id);
45+
Doc docs = store.loadDoc(id);
46+
JSONObject o = SwaggerJsonBuilder.build(id, specification, docs, requestUri.getBaseUri().toString());
47+
ResponseBuilder builder = Response.ok(o.toJSONString());
48+
addHeaders(builder, id);
49+
return builder.build();
50+
} catch (IOException e) {
51+
throw new WebApplicationException(e);
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)