下面列出了怎么用javax.ws.rs.core.Request的API类实例代码及写法,或者点击链接到github查看源代码。
@Path("v1/owner/{owner}/project/{project}/stack/{stack}/largeDataTileSource/{width}/{height}/small/{z}.png")
@GET
@Produces(RenderServiceUtil.IMAGE_PNG_MIME_TYPE)
@ApiOperation(
tags = "Bounding Box Image APIs",
value = "Render PNG image for the specified large data (type 5) section overview")
public Response renderLargeDataOverviewPng(@PathParam("owner") final String owner,
@PathParam("project") final String project,
@PathParam("stack") final String stack,
@PathParam("width") final Integer width,
@PathParam("height") final Integer height,
@PathParam("z") final Double z,
@QueryParam("maxOverviewWidthAndHeight") final Integer maxOverviewWidthAndHeight,
@BeanParam final RenderQueryParameters renderQueryParameters,
@QueryParam("maxTileSpecsToRender") final Integer maxTileSpecsToRender,
@QueryParam("translateOrigin") final Boolean translateOrigin,
@Context final Request request) {
return renderLargeDataOverview(owner, project, stack, width, height, z,
Utils.PNG_FORMAT, RenderServiceUtil.IMAGE_PNG_MIME_TYPE,
maxOverviewWidthAndHeight, renderQueryParameters,
maxTileSpecsToRender, translateOrigin, request);
}
/**
* Query via GET.
*
* @see <a href="http://www.w3.org/TR/sparql11-protocol/#query-operation">
* SPARQL 1.1 Protocol
* </a>
* @param req JAX-RS {@link Request} object
* @param uriInfo JAX-RS {@link UriInfo} object
* @param queryString the "query" query parameter
* @param defgraphs the "default-graph-uri" query parameter
* @param namedgraphs the "named-graph-uri" query parameter
* @param inference the "inference" query parameter
* @return the result of the SPARQL query
*/
@GET
@Produces({
RDFMediaType.SPARQL_RESULTS_JSON,
RDFMediaType.SPARQL_RESULTS_XML,
RDFMediaType.SPARQL_RESULTS_CSV,
RDFMediaType.SPARQL_RESULTS_TSV,
RDFMediaType.RDF_TURTLE,
RDFMediaType.RDF_NTRIPLES,
RDFMediaType.RDF_XML,
RDFMediaType.RDF_JSON
})
public Response query(
@Context Request req,
@Context UriInfo uriInfo,
@QueryParam("query") String queryString,
@QueryParam("default-graph-uri") List<String> defgraphs,
@QueryParam("named-graph-uri") List<String> namedgraphs,
@QueryParam("inference") String inference) {
return handleQuery(
req, uriInfo, queryString, defgraphs, namedgraphs, inference);
}
private ResponseBuilder getBuilder(final String jsonEntity, final Date lastMod, final boolean includeEtag, final Request request) {
String etagSource = DominoUtils.md5(jsonEntity);
EntityTag etag = new EntityTag(etagSource);
ResponseBuilder berg = null;
if (request != null) {
berg = request.evaluatePreconditions(etag);
}
if (berg == null) {
berg = Response.ok();
if (includeEtag) {
berg.tag(etag);
}
berg.type(MediaType.APPLICATION_JSON_TYPE);
berg.entity(jsonEntity);
berg.lastModified(lastMod);
CacheControl cc = new CacheControl();
cc.setMustRevalidate(true);
cc.setPrivate(true);
cc.setMaxAge(86400);
cc.setNoTransform(true);
berg.cacheControl(cc);
}
return berg;
}
/**
* Return the group specified by the key of the group.
*
* @response.representation.200.qname {http://www.example.com}groupVO
* @response.representation.200.mediaType application/xml, application/json
* @response.representation.200.doc A business group in the OLAT system
* @response.representation.200.example {@link org.olat.connectors.rest.support.vo.Examples#SAMPLE_GROUPVO}
* @param groupKey
* The key of the group
* @param request
* The REST request
* @param httpRequest
* The HTTP request
* @return
*/
@GET
@Path("{groupKey}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response findById(@PathParam("groupKey") final Long groupKey, @Context final Request request, @Context final HttpServletRequest httpRequest) {
final BusinessGroup bg = businessGroupService.loadBusinessGroup(groupKey, false);
if (bg == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
final Identity identity = RestSecurityHelper.getIdentity(httpRequest);
if (!isGroupManager(httpRequest) && !businessGroupService.isIdentityInBusinessGroup(identity, bg)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
final Date lastModified = bg.getLastModified();
Response.ResponseBuilder response = request.evaluatePreconditions(lastModified);
if (response == null) {
final GroupVO vo = ObjectFactory.get(bg);
response = Response.ok(vo);
}
return response.build();
}
@POST
@Path(ENDPOINT_PATH)
public Response post(
@Context UriInfo uriInfo,
@PathParam(ENDPOINT_PATH_PARAM) String path,
@Context HttpHeaders headers,
@Context Request request,
String entity) {
OperationContext context =
newOperationBuilder(HttpMethod.POST).
withEndpointPath(path).
withUriInfo(uriInfo).
withHeaders(headers).
withRequest(request).
withEntity(entity).
build();
return
EndpointControllerFactory.
newController().
createResource(context);
}
/**
* Perform a PATCH operation on an LDP Resource.
*
* @param uriInfo the URI info
* @param secContext the security context
* @param headers the HTTP headers
* @param request the request
* @param body the body
* @return the async response
*/
@PATCH
@Timed
@Operation(summary = "Update a linked data resource")
public CompletionStage<Response> updateResource(@Context final Request request, @Context final UriInfo uriInfo,
@Context final HttpHeaders headers, @Context final SecurityContext secContext,
@RequestBody(description = "The update request for RDF resources, typically as SPARQL-Update",
required = true,
content = @Content(mediaType = "application/sparql-update")) final String body) {
final TrellisRequest req = new TrellisRequest(request, uriInfo, headers, secContext);
final String urlBase = getBaseUrl(req);
final IRI identifier = buildTrellisIdentifier(req.getPath());
final PatchHandler patchHandler = new PatchHandler(req, body, trellis, extensions, supportsCreateOnPatch,
defaultJsonLdProfile, urlBase);
return getParent(identifier).thenCombine(trellis.getResourceService().get(identifier), patchHandler::initialize)
.thenCompose(patchHandler::updateResource).thenCompose(patchHandler::updateMemento)
.thenApply(ResponseBuilder::build).exceptionally(this::handleException);
}
/**
* Perform a POST operation on a LDP Resource.
*
* @param uriInfo the URI info
* @param secContext the security context
* @param headers the HTTP headers
* @param request the request
* @param body the body
* @return the async response
*/
@POST
@Timed
@Operation(summary = "Create a linked data resource")
public CompletionStage<Response> createResource(@Context final Request request, @Context final UriInfo uriInfo,
@Context final HttpHeaders headers, @Context final SecurityContext secContext,
@RequestBody(description = "The new resource") final InputStream body) {
final TrellisRequest req = new TrellisRequest(request, uriInfo, headers, secContext);
final String urlBase = getBaseUrl(req);
final String path = req.getPath();
final String identifier = getIdentifier(req);
final String separator = path.isEmpty() ? "" : "/";
final IRI parent = buildTrellisIdentifier(path);
final IRI child = buildTrellisIdentifier(path + separator + identifier);
final PostHandler postHandler = new PostHandler(req, parent, identifier, body, trellis, extensions, urlBase);
return trellis.getResourceService().get(parent)
.thenCombine(trellis.getResourceService().get(child), postHandler::initialize)
.thenCompose(postHandler::createResource).thenCompose(postHandler::updateMemento)
.thenApply(ResponseBuilder::build).exceptionally(this::handleException);
}
/**
* Get the editor tree model of the course by id
*
* @response.representation.200.mediaType application/xml
* @response.representation.200.doc The editor tree model of the course
* @response.representation.401.doc The roles of the authenticated user are not sufficient
* @response.representation.404.doc The course not found
* @param courseId
* The course resourceable's id
* @param httpRequest
* The HTTP request
* @param request
* The REST request
* @return It returns the XML representation of the <code>Editor model</code> object representing the course.
*/
@GET
@Path("editortreemodel")
@Produces(MediaType.APPLICATION_XML)
public Response findEditorTreeModelById(@PathParam("courseId") final Long courseId, @Context final HttpServletRequest httpRequest, @Context final Request request) {
if (!isAuthor(httpRequest)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
final ICourse course = loadCourse(courseId);
if (course == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
} else if (!isAuthorEditor(course, httpRequest)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
final VFSItem editorModelItem = course.getCourseBaseContainer().resolve("editortreemodel.xml");
final Date lastModified = new Date(editorModelItem.getLastModified());
final Response.ResponseBuilder response = request.evaluatePreconditions(lastModified);
if (response == null) {
return Response.ok(myXStream.toXML(course.getEditorTreeModel())).build();
}
return response.build();
}
/**
* Get properties for a resource.
* @param response the response
* @param request the request
* @param uriInfo the URI info
* @param headers the headers
* @param propfind the propfind
* @throws ParserConfigurationException if the XML parser is not properly configured
*/
@PROPFIND
@Consumes({APPLICATION_XML})
@Produces({APPLICATION_XML})
@Timed
public void getProperties(@Suspended final AsyncResponse response, @Context final Request request,
@Context final UriInfo uriInfo, @Context final HttpHeaders headers, final DavPropFind propfind)
throws ParserConfigurationException {
final TrellisRequest req = new TrellisRequest(request, uriInfo, headers);
final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + req.getPath());
final String location = fromUri(getBaseUrl(req)).path(req.getPath()).build().toString();
final Document doc = getDocument();
services.getResourceService().get(identifier)
.thenApply(this::checkResource)
.thenApply(propertiesToMultiStatus(doc, location, propfind))
.thenApply(multistatus -> status(MULTI_STATUS).entity(multistatus).build())
.exceptionally(this::handleException).thenApply(response::resume);
}
/**
* Wrapper for backend GET commands. Prepares, validates and revises data
* for commands and assembles responses.
*
* @param request
* the request context
* @param backend
* the backend command
* @param params
* the request parameters
* @param id
* true if id needs to be validated
* @return the response with representation or -collection
*/
protected <R extends Representation, P extends RequestParameters> Response get(
Request request, RestBackend.Get<R, P> backend, P params,
boolean id) throws Exception {
int version = getVersion(request);
prepareData(version, params, id, null, false);
Representation item = backend.get(params);
reviseData(version, item);
String tag = "";
if (item.getETag() != null) {
tag = item.getETag().toString();
}
return Response.ok(item).tag(tag).build();
}
@DELETE
@Path(ENDPOINT_PATH)
public Response delete(
@Context UriInfo uriInfo,
@PathParam(ENDPOINT_PATH_PARAM) String path,
@Context HttpHeaders headers,
@Context Request request) {
OperationContext context =
newOperationBuilder(HttpMethod.DELETE).
withEndpointPath(path).
withUriInfo(uriInfo).
withHeaders(headers).
withRequest(request).
build();
return
EndpointControllerFactory.
newController().
deleteResource(context);
}
public Response getTaskCountByCandidateGroupReport(Request request) {
Variant variant = request.selectVariant(VARIANTS);
if (variant != null) {
MediaType mediaType = variant.getMediaType();
if (MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) {
List<TaskCountByCandidateGroupResultDto> result = getTaskCountByCandidateGroupResultAsJson();
return Response.ok(result, mediaType).build();
}
else if (APPLICATION_CSV_TYPE.equals(mediaType) || TEXT_CSV_TYPE.equals(mediaType)) {
String csv = getReportResultAsCsv();
return Response
.ok(csv, mediaType)
.header("Content-Disposition", "attachment; filename=\"task-count-by-candidate-group.csv\"")
.build();
}
}
throw new InvalidRequestException(Status.NOT_ACCEPTABLE, "No acceptable content-type found");
}
/**
* Test to download a document file as a regular user who has no read access on it
*
* @throws Exception
*/
@Test
public void downloadDocumentFileAsUserWithNoAccessRights() throws Exception {
//Given
Request request = Mockito.mock(Request.class);
String fullName = ResourceUtil.WORKSPACE_ID + "/documents/" + ResourceUtil.DOCUMENT_ID + "/" + ResourceUtil.VERSION + "/" + ResourceUtil.ITERATION + "/" + ResourceUtil.FILENAME1;
BinaryResource binaryResource = new BinaryResource(ResourceUtil.FILENAME1, ResourceUtil.DOCUMENT_SIZE, new Date());
Mockito.when(documentService.canAccess(new DocumentIterationKey(ResourceUtil.WORKSPACE_ID, ResourceUtil.DOCUMENT_ID, ResourceUtil.VERSION, ResourceUtil.ITERATION))).thenReturn(false);
Mockito.when(documentService.getBinaryResource(fullName)).thenReturn(binaryResource);
Mockito.when(storageManager.getBinaryResourceInputStream(binaryResource)).thenReturn(new FileInputStream(new File(ResourceUtil.getFilePath(ResourceUtil.SOURCE_FILE_STORAGE + ResourceUtil.FILENAME1))));
Mockito.when(publicEntityManager.getBinaryResourceForSharedEntity(fullName)).thenReturn(binaryResource);
Mockito.when(contextManager.isCallerInRole(UserGroupMapping.REGULAR_USER_ROLE_ID)).thenReturn(true);
Mockito.when(publicEntityManager.canAccess(Matchers.any(DocumentIterationKey.class))).thenReturn(false);
//When
try {
Response response = documentBinaryResource.downloadDocumentFile(request, ResourceUtil.WORKSPACE_ID, ResourceUtil.DOCUMENT_ID, ResourceUtil.VERSION, ResourceUtil.ITERATION, ResourceUtil.FILENAME1, ResourceUtil.FILE_TYPE, null, ResourceUtil.RANGE, null, null, null);
assertTrue(false);
} catch (NotAllowedException e) {
assertTrue(true);
}
}
/**
* Test to download a part file as a guest and the part is public
*
* @throws Exception
*/
@Test
public void downloadPartFileAsGuestPartPublic() throws Exception {
//Given
Request request = Mockito.mock(Request.class);
BinaryResource binaryResource = Mockito.spy(new BinaryResource(ResourceUtil.FILENAME1, ResourceUtil.PART_SIZE, new Date()));
Mockito.when(storageManager.getBinaryResourceInputStream(binaryResource)).thenReturn(new FileInputStream(new File(ResourceUtil.getFilePath(ResourceUtil.SOURCE_FILE_STORAGE + ResourceUtil.FILENAME1))));
Mockito.when(contextManager.isCallerInRole(UserGroupMapping.REGULAR_USER_ROLE_ID)).thenReturn(false);
Mockito.when(publicEntityManager.canAccess(Mockito.any(PartIterationKey.class))).thenReturn(true);
Mockito.when(productService.canAccess(Matchers.any(PartIterationKey.class))).thenReturn(false);
Mockito.when(storageManager.getBinaryResourceInputStream(binaryResource)).thenReturn(new FileInputStream(new File(ResourceUtil.getFilePath(ResourceUtil.SOURCE_PART_STORAGE + ResourceUtil.TEST_PART_FILENAME1))));
Mockito.when(productService.getPartRevision(Matchers.any(PartRevisionKey.class))).thenReturn(new PartRevision());
//When
Mockito.when(publicEntityManager.getPublicBinaryResourceForPart(Matchers.anyString())).thenReturn(binaryResource);
Response response = partBinaryResource.downloadPartFile(request, ResourceUtil.WORKSPACE_ID,
ResourceUtil.PART_NUMBER, ResourceUtil.VERSION, ResourceUtil.ITERATION, "attached-files",
ResourceUtil.TEST_PART_FILENAME1, ResourceUtil.FILE_TYPE, null, ResourceUtil.RANGE, null, null, null);
//Then
assertNotNull(response);
assertEquals(response.getStatus(), 206);
assertNotNull(response.getEntity());
assertTrue(response.getEntity() instanceof BinaryResourceBinaryStreamingOutput);
}
/**
* Test to download a part file as a regular user who has read access
*
* @throws Exception
*/
@Test
public void downloadPartFileAsRegularUserReadAccess() throws Exception {
//Given
Request request = Mockito.mock(Request.class);
BinaryResource binaryResource = Mockito.spy(new BinaryResource(ResourceUtil.FILENAME1, ResourceUtil.PART_SIZE, new Date()));
Mockito.when(storageManager.getBinaryResourceInputStream(binaryResource)).thenReturn(new FileInputStream(new File(ResourceUtil.getFilePath(ResourceUtil.SOURCE_FILE_STORAGE + ResourceUtil.FILENAME1))));
Mockito.when(contextManager.isCallerInRole(UserGroupMapping.REGULAR_USER_ROLE_ID)).thenReturn(true);
Mockito.when(productService.getBinaryResource(Matchers.anyString())).thenReturn(binaryResource);
Mockito.when(productService.canAccess(Matchers.any(PartIterationKey.class))).thenReturn(true);
Mockito.when(productService.getPartRevision(Matchers.any(PartRevisionKey.class))).thenReturn(new PartRevision());
Mockito.when(storageManager.getBinaryResourceInputStream(binaryResource)).thenReturn(new FileInputStream(new File(ResourceUtil.getFilePath(ResourceUtil.SOURCE_PART_STORAGE + ResourceUtil.TEST_PART_FILENAME1))));
Mockito.when(publicEntityManager.getPublicBinaryResourceForPart(Matchers.anyString())).thenReturn(binaryResource);
//When
Response response = partBinaryResource.downloadPartFile(request, ResourceUtil.WORKSPACE_ID,
ResourceUtil.PART_NUMBER, ResourceUtil.VERSION, ResourceUtil.ITERATION, "attached-files",
ResourceUtil.TEST_PART_FILENAME1, ResourceUtil.FILE_TYPE, null, ResourceUtil.RANGE, null, null, null);
//Then
assertNotNull(response);
assertEquals(response.getStatus(), 206);
assertNotNull(response.getEntity());
assertTrue(response.getEntity() instanceof BinaryResourceBinaryStreamingOutput);
}
/**
* Query via GET (with inference).
*
* @see <a href="http://www.w3.org/TR/sparql11-protocol/#query-operation">
* SPARQL 1.1 Protocol
* </a>
* @param req JAX-RS {@link Request} object
* @param uriInfo JAX-RS {@link UriInfo} object
* @param queryString the "query" query parameter
* @param defgraphs the "default-graph-uri" query parameter
* @param namedgraphs the "named-graph-uri" query parameter
* @return the result of the SPARQL query
*/
@GET
@Path("/inference")
@Produces({
RDFMediaType.SPARQL_RESULTS_JSON,
RDFMediaType.SPARQL_RESULTS_XML,
RDFMediaType.SPARQL_RESULTS_CSV,
RDFMediaType.SPARQL_RESULTS_TSV,
RDFMediaType.RDF_TURTLE,
RDFMediaType.RDF_NTRIPLES,
RDFMediaType.RDF_XML,
RDFMediaType.RDF_JSON
})
public Response queryInference(
@Context Request req,
@Context UriInfo uriInfo,
@QueryParam("query") String queryString,
@QueryParam("default-graph-uri") List<String> defgraphs,
@QueryParam("named-graph-uri") List<String> namedgraphs) {
return handleQuery(
req, uriInfo, queryString, defgraphs, namedgraphs, "true");
}
private ResponseBuilder getBuilder(final String jsonEntity, final Date lastMod, final boolean includeEtag, final Request request) {
String etagSource = DominoUtils.md5(jsonEntity);
EntityTag etag = new EntityTag(etagSource);
ResponseBuilder berg = null;
if (request != null) {
berg = request.evaluatePreconditions(etag);
}
if (berg == null) {
// System.out.println("TEMP DEBUG creating a new builder");
berg = Response.ok();
if (includeEtag) {
berg.tag(etag);
}
berg.type(MediaType.APPLICATION_JSON_TYPE);
berg.entity(jsonEntity);
berg.lastModified(lastMod);
CacheControl cc = new CacheControl();
cc.setMustRevalidate(true);
cc.setPrivate(true);
cc.setMaxAge(86400);
cc.setNoTransform(true);
berg.cacheControl(cc);
}
return berg;
}
@Produces({ MediaType.APPLICATION_JSON })
@Path("/options")
@OPTIONS
public Response getOptions(@Context HttpHeaders headers, @Context Request request) {
return Response.ok().header(CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, "GET POST DELETE PUT OPTIONS")
.header(CorsHeaderConstants.HEADER_AC_ALLOW_CREDENTIALS, "false")
.header(CorsHeaderConstants.HEADER_AC_REQUEST_HEADERS, MediaType.APPLICATION_JSON).build();
}
public Item(@Context UriInfo uriInfo, @Context Request request, @Context MediaTypes mediaTypes,
@Context Service service, @Context com.atomgraph.processor.model.Application application, @Context Ontology ontology, @Context TemplateCall templateCall,
@Context HttpHeaders httpHeaders, @Context ResourceContext resourceContext)
{
super(uriInfo, request, mediaTypes,
service, application, ontology, templateCall,
httpHeaders, resourceContext);
if (log.isDebugEnabled()) log.debug("Constructing {} as direct indication of GRAPH {}", getClass(), uriInfo.getAbsolutePath());
}
@Test
public void injectsRequest() throws Exception {
processor.addApplication(new Application() {
@Override
public Set<Class<?>> getClasses() {
return newHashSet(RequestResource.class);
}
});
ContainerResponse response = launcher.service("POST", "/g/1", "", null, null, null);
assertTrue(String.format("Expected %s injected", Request.class), response.getEntity() instanceof Request);
}
@Test
public void testGetHtmlDoc() throws Exception {
Request request = mock(Request.class);
Variant variant = mock(Variant.class);
when(variant.getMediaType()).thenReturn(MediaType.TEXT_HTML_TYPE);
when(request.selectVariant(any(List.class))).thenReturn(variant);
Response result = apiResource.api(request);
assertThat(result.getEntity()).isNotNull();
assertThat(result.getStatus()).isEqualTo(200);
assertThat(result.getMediaType()).isEqualTo(MediaType.TEXT_HTML_TYPE);
}
/**
* Runs SPARQL queries
*
* @param type
* Result Format: N3, N-TRIPLE, RDF/XML, RDF/XML-ABBREV, TURTLE
* @param query
* Sparql for the query
* @return
*/
@GET
@Produces({ WebUtil.MEDIA_TYPE_APPLICATION_NTRIPLE,
WebUtil.MEDIA_TYPE_APPLICATION_RDFJSON,
WebUtil.MEDIA_TYPE_APPLICATION_RDFXML, MediaType.TEXT_PLAIN,
WebUtil.MEDIA_TYPE_TEXT_N3, WebUtil.MEDIA_TYPE_TEXT_TURTLE })
public Response selectQuery(@QueryParam("sparql") String query,
@Context Request request) {
Variant variant = request.selectVariant(WebUtil.VARIANTS);
MediaType mediaType = variant.getMediaType();
Repository repository = RepositoryManager.getInstance().getRepository();
OntModel ontModel = repository.getMDRDatabase().getOntModel();
Query q = null;
try {
query = URLDecoder.decode(query, "UTF-8");
q = QueryFactory.create(query);
} catch (Exception exc) {
logger.error("Error during the creation of the SPARQL query", exc);
return Response.serverError().build();
}
QueryExecution qexec = QueryExecutionFactory.create(q, ontModel);
Model resultModel = null;
if (q.isSelectType()) {
ResultSet resultSet = qexec.execSelect();
resultModel = ResultSetFormatter.toModel(resultSet);
} else {
throw new WebApplicationException(Status.UNAUTHORIZED);
}
qexec.close();
graphStream.setModel(resultModel);
graphStream.setLanguage(WebUtil.getSerializationLanguage(mediaType
.toString()));
return Response.ok(graphStream).build();
}
@Override
public Response getDissemination(Request httpRequest) throws DigitalObjectException, DigitalObjectNotFoundException {
String pid = fobject.getPid();
if (dsId == null) {
return Response.ok(fobject.asText(), MediaType.TEXT_XML_TYPE)
.header("Content-Disposition", "inline; filename=\"" + pid + ".xml\"")
.build();
}
if (fobject instanceof LocalObject) {
LocalObject lobject = (LocalObject) fobject;
BinaryEditor loader = BinaryEditor.dissemination(lobject, dsId);
if (loader == null) {
throw new DigitalObjectNotFoundException(pid, null, dsId, null, null);
}
File entity = loader.read();
if (entity == null) {
throw new DigitalObjectNotFoundException(pid, null, dsId, "no content", null);
}
Date lastModification = new Date(loader.getLastModified());
ResponseBuilder evaluatePreconditions = httpRequest == null
? null : httpRequest.evaluatePreconditions(lastModification);
if (evaluatePreconditions != null) {
return evaluatePreconditions.build();
}
return Response.ok(entity, loader.getProfile().getDsMIME())
.header("Content-Disposition", "inline; filename=\"" + entity.getName() + '"')
.lastModified(lastModification)
// .cacheControl(null)
// .expires(new Date(2100, 1, 1))
.build();
} else if (fobject instanceof RemoteObject) {
RemoteObject remote = (RemoteObject) fobject;
return getResponse(remote, dsId);
}
throw new IllegalStateException("unsupported: " + fobject.getClass());
}
@PATCH
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response patchDocumentByUnid(final String requestEntity, @Context final UriInfo uriInfo,
@PathParam(Routes.NAMESPACE) final String namespace,
@HeaderParam(Headers.IF_UNMODIFIED_SINCE) final String ifUnmodifiedSince, @Context final Request request)
throws JsonException, IOException {
ParamMap pm = Parameters.toParamMap(uriInfo);
Response response = updateFrameByMetaid(requestEntity, namespace, ifUnmodifiedSince, pm, false, request);
return response;
}
@GET
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/serviceconfigs/processes")
public Response getServiceconfigs(@Context HttpServletRequest request, @Context HttpHeaders header,
@Context Company company, @Context Locale locale, @Context User user,
@Context ServiceContext serviceContext, @QueryParam("domain") String domain,
@QueryParam("public_") String public_, @Context Request requestCC);
@GET
@Path("/{code}")
@Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getDictCollectionDetail(@Context HttpServletRequest request, @Context HttpHeaders header,
@Context Company company, @Context Locale locale, @Context User user, @Context ServiceContext serviceContext,
@ApiParam(value = "code that need to be get detail", required = true) @PathParam("code") String code, @Context Request requestCC);
@GET
@Path("/statistics/levels")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED })
@ApiOperation(value = "Get StatisticByLevel", response = StatisticsLevelResultsModel.class)
@ApiResponses(value = {
@ApiResponse(code = HttpURLConnection.HTTP_OK, message = "Returns a list of ServiceInfo", response = StatisticsLevelResultsModel.class),
@ApiResponse(code = HttpURLConnection.HTTP_NOT_FOUND, message = "Not found", response = ExceptionModel.class),
@ApiResponse(code = HttpURLConnection.HTTP_FORBIDDEN, message = "Access denied", response = ExceptionModel.class) })
public Response getStatisticByLevel(@Context HttpServletRequest request, @Context HttpHeaders header,
@Context Company company, @Context Locale locale, @Context User user,
@Context ServiceContext serviceContext, @Context Request requestCC);
@GET
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED })
@ApiOperation(value = "Get ServiceInfo", response = ServiceInfoResultsModel.class)
@ApiResponses(value = {
@ApiResponse(code = HttpURLConnection.HTTP_OK, message = "Returns a list of ServiceInfo", response = ServiceInfoResultsModel.class),
@ApiResponse(code = HttpURLConnection.HTTP_UNAUTHORIZED, message = "Unauthorized", response = ExceptionModel.class),
@ApiResponse(code = HttpURLConnection.HTTP_NOT_FOUND, message = "Not found", response = ExceptionModel.class),
@ApiResponse(code = HttpURLConnection.HTTP_FORBIDDEN, message = "Access denied", response = ExceptionModel.class) })
public Response getServiceInfos(@Context HttpServletRequest request, @Context HttpHeaders header,
@Context Company company, @Context Locale locale, @Context User user,
@Context ServiceContext serviceContext,
@ApiParam(value = "query params for search") @BeanParam ServiceInfoSearchModel search, @Context Request requestCC);
@Path("v1/owner/{owner}/project/{project}/stack/{stack}/z/{z}/box/{x},{y},{width},{height},{scale}/png-image")
@GET
@Produces(RenderServiceUtil.IMAGE_PNG_MIME_TYPE)
@ApiOperation(
tags = "Bounding Box Image APIs",
value = "Render PNG image for the specified bounding box")
public Response renderPngImageForBox(@PathParam("owner") final String owner,
@PathParam("project") final String project,
@PathParam("stack") final String stack,
@PathParam("x") final Double x,
@PathParam("y") final Double y,
@PathParam("z") final Double z,
@PathParam("width") final Integer width,
@PathParam("height") final Integer height,
@PathParam("scale") final Double scale,
@BeanParam final RenderQueryParameters renderQueryParameters,
@QueryParam("maxTileSpecsToRender") final Integer maxTileSpecsToRender,
@Context final Request request) {
LOG.info("renderPngImageForBox: entry");
final ResponseHelper responseHelper = new ResponseHelper(request, getStackMetaData(owner, project, stack));
if (responseHelper.isModified()) {
final RenderParameters renderParameters =
getRenderParametersForGroupBox(owner, project, stack, null,
x, y, z, width, height, scale,
renderQueryParameters);
return RenderServiceUtil.renderPngImage(renderParameters, maxTileSpecsToRender, responseHelper);
} else {
return responseHelper.getNotModifiedResponse();
}
}
@Override
public Response getStatisticByLevel(HttpServletRequest request, HttpHeaders header, Company company, Locale locale,
User user, ServiceContext serviceContext, Request requestCC) {
ServiceInfoActions actions = new ServiceInfoActionsImpl();
long groupId = GetterUtil.getLong(header.getHeaderString("groupId"));
JSONObject results = JSONFactoryUtil.createJSONObject();
try {
results = actions.getStatisticByLevel(serviceContext, groupId);
// _log.info(results);
// EntityTag etag = new EntityTag(Integer.toString(Long.valueOf(groupId).hashCode()));
// ResponseBuilder builder = requestCC.evaluatePreconditions(etag);
//
// if (OpenCPSConfigUtil.isHttpCacheEnable() && builder == null) {
// builder = Response.status(200);
// CacheControl cc = new CacheControl();
// cc.setMaxAge(OpenCPSConfigUtil.getHttpCacheMaxAge());
// cc.setPrivate(true);
// builder.tag(etag);
// return builder.status(200).entity(JSONFactoryUtil.looseSerialize(results)).cacheControl(cc).build();
// }
// else {
// return Response.status(200).entity(JSONFactoryUtil.looseSerialize(results)).build();
// }
return Response.status(200).entity(JSONFactoryUtil.looseSerialize(results)).build();
} catch (Exception e) {
return BusinessExceptionImpl.processException(e);
}
}