java类javax.ws.rs.ext.ContextResolver的实例源码

ODataBatchSingleUnit.java 文件源码 项目:oreva 阅读 20 收藏 0 点赞 0 评论 0
@Override
public final Response execute(HttpHeaders httpHeaders, ContextResolver<ODataProducer> producerResolver, URI baseUri) throws Exception {

  if (!fullResourceUri.toString().startsWith(baseUri.toString())) {
    throw new UnsupportedOperationException("the resouce url does not match base url from batch operation,\n\tbaseUri=" + baseUri +
        "\n\trequest url=" + fullResourceUri);
  }

  if (!isParsed) {
    parseUri(fullResourceUri, baseUri);
    isParsed = true;
  }
  return delegate(httpHeaders, baseUri, producerResolver);
}
ODataBatchSingleUnit.java 文件源码 项目:oreva 阅读 22 收藏 0 点赞 0 评论 0
/**
 * Creates the response for batch.
 *
 * @param httpHeaders the http headers
 * @param producerResolver the producer resolver
 * @param baseUri the base uri
 * @param requestedEntity the requested entity
 * @return the response
 * @throws Exception the exception
 */
public Response createResponseForBatch(HttpHeaders httpHeaders, ContextResolver<ODataProducer> producerResolver, URI baseUri, String requestedEntity) throws Exception {
  ODataProducer producer = producerResolver.getContext(ODataProducer.class);
  OEntityKey entityKey = null;
  //setting isResponse to true, since the entity we get from the response contain not only name and value pairs, but also metadata, relations,etc
  //so that Json parser will parse it and give you back OEntity.
  Boolean isResponse = true;
  BatchRequestResource batchRequestResource = new BatchRequestResource();
  OEntity entity = batchRequestResource.getRequestEntity(httpHeaders, getResourceHeaders(), getUriInfo(), requestedEntity, producer.getMetadata(), entitySetName, entityKey, isResponse);

  return batchRequestResource.createResponseForBatch(httpHeaders, getUriInfo(), producer, getEnitySetName(), entity, getMediaTypeListForBatch());
}
EntitiesRequestResource.java 文件源码 项目:oreva 阅读 22 收藏 0 点赞 0 评论 0
@PUT
public Response functionCallPut(
    @Context HttpHeaders httpHeaders,
    @Context UriInfo uriInfo,
    @Context ContextResolver<ODataProducer> producerResolver,
    @Context SecurityContext securityContext,
    @QueryParam("$format") String format,
    @QueryParam("$callback") String callback,
    @PathParam("entitySetName") String functionName,
    InputStream payload) throws Exception {

  Response response;
  log("functionCallDelete", "function", functionName);

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);

  // the OData URI scheme makes it impossible to have unique @Paths that refer
  // to functions and entity sets
  if (producer.getMetadata().containsEdmFunctionImport(functionName)) {
    // functions that return collections of entities should support the
    // same set of query options as entity set queries so give them everything.

    QueryInfo query = QueryInfo.newBuilder().setCustomOptions(OptionsQueryParser.parseCustomOptions(uriInfo)).build();
    response = FunctionResource.callFunction(ODataHttpMethod.PUT, httpHeaders, uriInfo, securityContext, producer, functionName, format, callback, query);
  } else {
    throw new NotFoundException(functionName);
  }

  return response;
}
EntitiesRequestResource.java 文件源码 项目:oreva 阅读 20 收藏 0 点赞 0 评论 0
@DELETE
public Response functionCallDelete(
    @Context HttpHeaders httpHeaders,
    @Context UriInfo uriInfo,
    @Context ContextResolver<ODataProducer> producerResolver,
    @Context SecurityContext securityContext,
    @QueryParam("$format") String format,
    @QueryParam("$callback") String callback,
    @PathParam("entitySetName") String functionName,
    InputStream payload) throws Exception {

  Response response;
  log("functionCallDelete", "function", functionName);

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);

  // the OData URI scheme makes it impossible to have unique @Paths that refer
  // to functions and entity sets
  if (producer.getMetadata().containsEdmFunctionImport(functionName)) {
    // functions that return collections of entities should support the
    // same set of query options as entity set queries so give them everything.

    QueryInfo query = QueryInfo.newBuilder().setCustomOptions(OptionsQueryParser.parseCustomOptions(uriInfo)).build();
    response = FunctionResource.callFunction(ODataHttpMethod.DELETE, httpHeaders, uriInfo, securityContext, producer, functionName, format, callback, query);
  } else {
    throw new NotFoundException(functionName);
  }

  return response;
}
EntitiesRequestResource.java 文件源码 项目:oreva 阅读 18 收藏 0 点赞 0 评论 0
@GET
@Produces({ ODataConstants.APPLICATION_ATOM_XML_CHARSET_UTF8,
    ODataConstants.TEXT_JAVASCRIPT_CHARSET_UTF8,
    ODataConstants.APPLICATION_JAVASCRIPT_CHARSET_UTF8 })
public Response getEntities(
    @Context HttpHeaders httpHeaders,
    @Context UriInfo uriInfo,
    @Context ContextResolver<ODataProducer> producerResolver,
    @Context SecurityContext securityContext,
    @PathParam("entitySetName") String entitySetName,
    @QueryParam("$inlinecount") String inlineCount,
    @QueryParam("$top") String top,
    @QueryParam("$skip") String skip,
    @QueryParam("$filter") String filter,
    @QueryParam("$orderby") String orderBy,
    @QueryParam("$format") String format,
    @QueryParam("$callback") String callback,
    @QueryParam("$skiptoken") String skipToken,
    @QueryParam("$expand") String expand,
    @QueryParam("$select") String select)
    throws Exception {

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);

  return getEntitiesImpl(httpHeaders, uriInfo, securityContext, producer, entitySetName, false, inlineCount, top, skip,
      filter, orderBy, format, callback, skipToken, expand, select);
}
EntitiesRequestResource.java 文件源码 项目:oreva 阅读 21 收藏 0 点赞 0 评论 0
@Path("{navProp: [^$/()]+?}")
public BaseResource getNavProperty(
    @Context ContextResolver<ODataProducer> producerResolver,
    @PathParam("entitySetName") String entitySetName,
    @PathParam("navProp") String functionName) {

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);
  if (producer.getMetadata().containsEdmFunctionImport(functionName)) {
    return new FunctionResource();
  } else {
    throw new NotFoundException(functionName);
  }
}
PropertyRequestResource.java 文件源码 项目:oreva 阅读 24 收藏 0 点赞 0 评论 0
@PUT
public Response updateEntity(
    @Context HttpHeaders httpHeaders,
    @Context UriInfo uriInfo,
    @Context ContextResolver<ODataProducer> producerResolver,
    @Context SecurityContext securityContext,
    @PathParam("entitySetName") String entitySetName,
    @PathParam("id") String id,
    @PathParam("navProp") String navProp,
    InputStream payload) {

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);
  Enumerable<EdmProperty> props = producer.getMetadata().getEdmEntitySet(entitySetName).getType().getProperties();

  // only support update NamedStream property 
  for (EdmProperty prop : props) {
    if (prop.getName().equals(navProp)) {
      if (prop.getType().getFullyQualifiedTypeName().equals("Edm.Stream")) {
        QueryInfo query = new QueryInfo(
            null,
            null,
            null,
            null,
            null,
            null,
            OptionsQueryParser.parseCustomOptions(uriInfo),
            null,
            null);

        return updateNamedStreamResponse(producer, entitySetName, id, navProp, query, payload);
      }
    }
  }

  log.info("NavProp: updateEntity Not supported yet.");
  throw new NotImplementedException("NavProp: updateEntity not supported yet.");
}
PropertyRequestResource.java 文件源码 项目:oreva 阅读 18 收藏 0 点赞 0 评论 0
@DELETE
public Response deleteEntity(
    @Context ContextResolver<ODataProducer> producerResolver,
    @PathParam("entitySetName") String entitySetName,
    @PathParam("id") String id,
    @PathParam("navProp") String navProp) {
  throw new NotImplementedException("Not supported yet.");
}
MetadataResource.java 文件源码 项目:oreva 阅读 23 收藏 0 点赞 0 评论 0
@GET
@Produces({ ODataConstants.APPLICATION_XML_CHARSET_UTF8, ODataConstants.APPLICATION_ATOMSVC_XML_CHARSET_UTF8 })
public Response getMetadata(
    @Context HttpHeaders httpHeaders,
    @Context UriInfo uriInfo,
    @Context ContextResolver<ODataProducer> producerResolver,
    @QueryParam("$format") String format) {

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);

  // a request for media type atomsvc+xml means give me the service document of the metadata producer
  if ("atomsvc".equals(format) || isAtomSvcRequest(httpHeaders)) {
    MetadataProducer metadataProducer = producer.getMetadataProducer();
    if (metadataProducer == null) {
      throw newMetadataNotImplementedException();
    }
    ServiceDocumentResource r = new ServiceDocumentResource();
    return r.getServiceDocument(httpHeaders, uriInfo, producerResolver, FormatType.ATOM.name(), null);
  } else {
    StringWriter w = new StringWriter();
    ODataProducer source = "metamodel".equals(format) ? producer.getMetadataProducer() : producer;
    if (source == null) {
      throw newMetadataNotImplementedException();
    }
    EdmDataServices s = source.getMetadata();
    EdmxFormatWriter.write(s, w);

    return Response.ok(w.toString(), ODataConstants.APPLICATION_XML_CHARSET_UTF8)
        .header(ODataConstants.Headers.DATA_SERVICE_VERSION, ODataConstants.DATA_SERVICE_VERSION_HEADER)
        .build();
  }
}
MetadataResource.java 文件源码 项目:oreva 阅读 21 收藏 0 点赞 0 评论 0
@GET
@Path("{entitySetName}")
@Produces({ ODataConstants.APPLICATION_ATOM_XML_CHARSET_UTF8,
    ODataConstants.TEXT_JAVASCRIPT_CHARSET_UTF8,
    ODataConstants.APPLICATION_JAVASCRIPT_CHARSET_UTF8 })
public Response getMetadataEntities(
    @Context HttpHeaders httpHeaders,
    @Context UriInfo uriInfo,
    @Context ContextResolver<ODataProducer> producerResolver,
    @Context SecurityContext securityContext,
    @PathParam("entitySetName") String entitySetName,
    @PathParam("optionalId") String optionalId,
    @QueryParam("$inlinecount") String inlineCount,
    @QueryParam("$top") String top,
    @QueryParam("$skip") String skip,
    @QueryParam("$filter") String filter,
    @QueryParam("$orderby") String orderBy,
    @QueryParam("$format") String format,
    @QueryParam("$callback") String callback,
    @QueryParam("$skiptoken") String skipToken,
    @QueryParam("$expand") String expand,
    @QueryParam("$select") String select) throws Exception {

  ODataProducer producer = producerResolver.getContext(ODataProducer.class);

  MetadataProducer metadataProducer = producer.getMetadataProducer();
  if (metadataProducer == null) {
    throw newMetadataNotImplementedException();
  }

  EntitiesRequestResource r = new EntitiesRequestResource();
  return r.getEntitiesImpl(httpHeaders, uriInfo, securityContext, metadataProducer, entitySetName, false, inlineCount, top, skip, filter, orderBy, format, callback, skipToken, expand, select);
}


问题


面经


文章

微信
公众号

扫码关注公众号