package org.odata4j.producer.resources; import java.net.URI; import java.net.URISyntaxException; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import javax.ws.rs.ext.ContextResolver; import org.odata4j.core.ODataConstants; import org.odata4j.core.OEntity; import org.odata4j.core.OEntityKey; import org.odata4j.producer.ODataProducer; /** * * Copyright 2013 Halliburton * @author <a href="mailto:peng.chen@halliburton.com">Kevin Chen</a> * */ public class ODataBatchMergeUnit extends ODataBatchSingleUnit { protected ODataBatchMergeUnit(HttpHeaders hHeaders, UriInfo uriInfo, String uri, String contents, MultivaluedMap<String, String> headers) throws URISyntaxException { super(uriInfo, uri, contents, headers); } @Override protected Response delegate(HttpHeaders httpHeaders, URI baseUri, ContextResolver<ODataProducer> producerResolver) throws Exception { ODataProducer producer = producerResolver.getContext(ODataProducer.class); OEntity entity = new BatchRequestResource().getRequestEntity(httpHeaders, getResourceHeaders(), getUriInfo(), getResourceContent(), producer.getMetadata(), getEnitySetName(), OEntityKey.parse(getEntityKey()), false); producer.mergeEntity(null, getEnitySetName(), entity); Response response = Response.ok().header(ODataConstants.Headers.DATA_SERVICE_VERSION, ODataConstants.DATA_SERVICE_VERSION_HEADER) .header(ODataConstants.Headers.CONTENT_TYPE, getResourceHeaders().getFirst(ODataConstants.Headers.CONTENT_TYPE)) .header(ODataConstants.Headers.CONTENT_LENGTH, 0).build(); return response; } }