@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);
}
java类javax.ws.rs.ext.ContextResolver的实例源码
ODataBatchSingleUnit.java 文件源码
项目:oreva
阅读 20
收藏 0
点赞 0
评论 0
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);
}