Java Code Examples for javax.ws.rs.core.HttpHeaders#ACCEPT

The following examples show how to use javax.ws.rs.core.HttpHeaders#ACCEPT . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ODataEntityResource.java    From io with Apache License 2.0 6 votes vote down vote up
/**
 * PUT メソッドの処理.
 * @param reader リクエストボディ
 * @param accept Accept ヘッダ
 * @param ifMatch If-Match ヘッダ
 * @return JAX-RSResponse
 */
@PUT
public Response put(Reader reader,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @HeaderParam(HttpHeaders.IF_MATCH) final String ifMatch) {

    // メソッド実行可否チェック
    checkNotAllowedMethod();

    // アクセス制御
    this.odataResource.checkAccessContext(this.accessContext,
            this.odataResource.getNecessaryWritePrivilege(getEntitySetName()));

    String etag;

    // リクエストの更新をProducerに依頼
    OEntityWrapper oew = updateEntity(reader, ifMatch);

    // 特に例外があがらなければ、レスポンスを返す。
    // oewに新たに登録されたETagを返す
    etag = oew.getEtag();
    return Response.noContent()
            .header(HttpHeaders.ETAG, ODataResource.renderEtagHeader(etag))
            .header(ODataConstants.Headers.DATA_SERVICE_VERSION, ODataVersion.V2.asString)
            .build();
}
 
Example 2
Source File: ODataMergeResource.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * MERGE メソッドの処理.
 * @param reader リクエストボディ
 * @param accept Accept ヘッダ
 * @param ifMatch If-Match ヘッダ
 * @return JAX-RSResponse
 */
public Response merge(Reader reader,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @HeaderParam(HttpHeaders.IF_MATCH) final String ifMatch) {
    // メソッド実行可否チェック
    checkNotAllowedMethod();

    // アクセス制御
    this.odataResource.checkAccessContext(this.accessContext,
            this.odataResource.getNecessaryWritePrivilege(getEntitySetName()));

    // リクエストからOEntityWrapperを作成する.
    OEntity oe = this.createRequestEntity(reader, this.oEntityKey);
    OEntityWrapper oew = new OEntityWrapper(null, oe, null);

    // 必要ならばメタ情報をつける処理
    this.odataResource.beforeMerge(oew, this.oEntityKey);

    // If-Matchヘッダで入力されたETagをMVCC用での衝突検知用にOEntityWrapperに設定する。
    String etag = ODataResource.parseEtagHeader(ifMatch);
    oew.setEtag(etag);

    // MERGE処理をODataProducerに依頼。
    // こちらでリソースの存在確認もしてもらう。
    getOdataProducer().mergeEntity(getEntitySetName(), this.oEntityKey, oew);

    // 特に例外があがらなければ、レスポンスを返す。
    // oewに新たに登録されたETagを返す
    etag = oew.getEtag();
    return Response.noContent()
            .header(HttpHeaders.ETAG, ODataResource.renderEtagHeader(etag))
            .header(ODataConstants.Headers.DATA_SERVICE_VERSION, ODataVersion.V2.asString)
            .build();

}
 
Example 3
Source File: ODataEntityResource.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * MERGE メソッドの処理.
 * @param reader リクエストボディ
 * @param accept Accept ヘッダ
 * @param ifMatch If-Match ヘッダ
 * @return JAX-RSResponse
 */
@MERGE
public Response merge(Reader reader,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @HeaderParam(HttpHeaders.IF_MATCH) final String ifMatch) {
    ODataMergeResource oDataMergeResource = new ODataMergeResource(this.odataResource, this.getEntitySetName(),
            this.keyString);
    return oDataMergeResource.merge(reader, accept, ifMatch);
}
 
Example 4
Source File: ODataEntityResource.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * DELETEメソッドの処理.
 * @param accept Accept ヘッダ
 * @param ifMatch If-Match ヘッダ
 * @return JAX-RS Response
 */
@DELETE
public Response delete(
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @HeaderParam(HttpHeaders.IF_MATCH) final String ifMatch) {
    // アクセス制御
    this.odataResource.checkAccessContext(this.accessContext,
            this.odataResource.getNecessaryWritePrivilege(getEntitySetName()));

    deleteEntity(ifMatch);
    return Response.noContent().header(ODataConstants.Headers.DATA_SERVICE_VERSION, ODataVersion.V2.asString)
            .build();
}
 
Example 5
Source File: ODataPropertyResource.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * POST メソッドへの処理.
 * @param uriInfo UriInfo
 * @param accept アクセプトヘッダ
 * @param format $formatクエリ
 * @param reader リクエストボディ
 * @return JAX-RS Response
 */
@POST
public final Response postEntity(
        @Context final UriInfo uriInfo,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @DefaultValue(FORMAT_JSON) @QueryParam("$format") final String format,
        final Reader reader) {
    // アクセス制御
    this.checkWriteAccessContext();

    OEntityWrapper oew = createEntityFromInputStream(reader);
    EntityResponse res = getOdataProducer().createNp(this.sourceEntityId, this.targetNavProp,
            oew, getEntitySetName());
    if (res == null || res.getEntity() == null) {
        return Response.status(HttpStatus.SC_PRECONDITION_FAILED).entity("conflict").build();
    }

    OEntity ent = res.getEntity();
    String etag = oew.getEtag();

    // バージョンが更新された場合、etagを更新する
    if (etag != null && ent instanceof OEntityWrapper) {
        ((OEntityWrapper) ent).setEtag(etag);
    }

    // 現状は、ContentTypeはJSON固定
    MediaType outputFormat = this.decideOutputFormat(accept, format);
    // Entity Responseをレンダー
    List<MediaType> contentTypes = new ArrayList<MediaType>();
    contentTypes.add(outputFormat);
    UriInfo resUriInfo = DcCoreUtils.createUriInfo(uriInfo, 2);
    String key = AbstractODataResource.replaceDummyKeyToNull(ent.getEntityKey().toKeyString());

    String responseStr = renderEntityResponse(resUriInfo, res, format, contentTypes);

    // 制御コードのエスケープ処理
    responseStr = escapeResponsebody(responseStr);
    ResponseBuilder rb = getPostResponseBuilder(ent, outputFormat, responseStr, resUriInfo, key);
    return rb.build();
}
 
Example 6
Source File: ODataEntitiesResource.java    From io with Apache License 2.0 5 votes vote down vote up
/**
 * @param uriInfo UriInfo
 * @param accept Acceptヘッダ
 * @param format $format パラメタ
 * @param reader リクエストボディ
 * @return JAX-RS Response
 */
@POST
public Response post(
        @Context final UriInfo uriInfo,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @DefaultValue(FORMAT_JSON) @QueryParam("$format") final String format,
        final Reader reader) {

    // メソッド実行可否チェック
    checkNotAllowedMethod(uriInfo);

    // アクセス制御
    this.odataResource.checkAccessContext(this.accessContext,
            this.odataResource.getNecessaryWritePrivilege(getEntitySetName()));

    UriInfo resUriInfo = DcCoreUtils.createUriInfo(uriInfo, 1);

    // Entityの作成を Producerに依頼
    EntityResponse res = this.createEntity(reader, this.odataResource);

    // 作成結果の評価
    OEntity ent = res.getEntity();

    // 現状は、ContentTypeはJSON固定
    MediaType outputFormat = this.decideOutputFormat(accept, format);
    // Entity Responseをレンダー
    List<MediaType> contentTypes = new ArrayList<MediaType>();
    contentTypes.add(outputFormat);

    String key = AbstractODataResource.replaceDummyKeyToNull(ent.getEntityKey().toKeyString());
    String responseStr = renderEntityResponse(resUriInfo, res, format, contentTypes);

    // 制御コードのエスケープ処理
    responseStr = escapeResponsebody(responseStr);

    ResponseBuilder rb = getPostResponseBuilder(ent, outputFormat, responseStr, resUriInfo, key);
    return rb.build();
}
 
Example 7
Source File: AmforeasRestClient.java    From amforeas with GNU General Public License v3.0 5 votes vote down vote up
public AmforeasRestClient(String protocol, String host, Integer port, String root, String alias) {
    validateInput(protocol, host, port, root, alias);

    this.protocol = protocol;
    this.host = host;
    this.port = port;
    this.root = root;
    this.alias = alias;
    this.accept = new BasicHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
}
 
Example 8
Source File: AmforeasRestClient.java    From amforeas with GNU General Public License v3.0 5 votes vote down vote up
public AmforeasRestClient(String protocol, String host, Integer port, String root, String alias, String format) {
    validateInput(protocol, host, port, root, alias);

    this.protocol = protocol;
    this.host = host;
    this.port = port;
    this.root = root;
    this.alias = alias;
    this.accept = new BasicHeader(HttpHeaders.ACCEPT, format);
}
 
Example 9
Source File: ODataEntityResource.java    From io with Apache License 2.0 4 votes vote down vote up
/**
 * GETメソッドの処理.
 * @param uriInfo UriInfo
 * @param accept Accept ヘッダ
 * @param ifNoneMatch If-None-Match ヘッダ
 * @param format $format パラメタ
 * @param expand $expand パラメタ
 * @param select $select パラメタ
 * @return JAX-RSResponse
 */
@GET
public Response get(
        @Context final UriInfo uriInfo,
        @HeaderParam(HttpHeaders.ACCEPT) String accept,
        @HeaderParam(HttpHeaders.IF_NONE_MATCH) String ifNoneMatch,
        @QueryParam("$format") String format,
        @QueryParam("$expand") String expand,
        @QueryParam("$select") String select) {
    // アクセス制御
    this.odataResource.checkAccessContext(this.accessContext,
            this.odataResource.getNecessaryReadPrivilege(getEntitySetName()));

    UriInfo resUriInfo = DcCoreUtils.createUriInfo(uriInfo, 1);

    // $formatとAcceptヘッダの値から出力形式を決定
    MediaType contentType = decideOutputFormat(accept, format);
    String outputFormat = FORMAT_JSON;
    if (MediaType.APPLICATION_ATOM_XML_TYPE.equals(contentType)) {
        outputFormat = FORMAT_ATOM;
    }

    // Entityの取得をProducerに依頼
    EntityResponse entityResp = getEntity(expand, select, resUriInfo);
    String respStr = renderEntityResponse(resUriInfo, entityResp, outputFormat, null);

    // 制御コードのエスケープ処理
    respStr = escapeResponsebody(respStr);

    ResponseBuilder rb = Response.ok().type(contentType);
    rb.header(ODataConstants.Headers.DATA_SERVICE_VERSION, ODataVersion.V2.asString);
    // ETagを正式実装するときに、返却する必要がある
    OEntity entity = entityResp.getEntity();
    String etag = null;
    // 基本的にこのIF文に入る。
    if (entity instanceof OEntityWrapper) {
        OEntityWrapper oew = (OEntityWrapper) entity;

        // エンティティごとのアクセス可否判断
        this.odataResource.checkAccessContextPerEntity(this.accessContext, oew);

        etag = oew.getEtag();
        // 基本的にこのIF文に入る。
        if (etag != null) {
            // If-None-Matchヘッダの指定があるとき
            if (ifNoneMatch != null && ifNoneMatch.equals(ODataResource.renderEtagHeader(etag))) {
                return Response.notModified().build();
            }
            // ETagヘッダの付与
            rb.header(HttpHeaders.ETAG, ODataResource.renderEtagHeader(etag));
        }
    }
    return rb.entity(respStr).build();
}
 
Example 10
Source File: ODataPropertyResource.java    From io with Apache License 2.0 4 votes vote down vote up
/**
 * NavPropに対するGETメソッドによる検索処理.
 * @param uriInfo UriInfo
 * @param accept Acceptヘッダ
 * @param callback ?? なんだこれは?JSONP?
 * @param skipToken ?? なんだこれは?
 * @param q 全文検索パラメタ
 * @return JAX-RS Response
 */
@GET
@Produces({ODataConstants.APPLICATION_ATOM_XML_CHARSET_UTF8, ODataConstants.TEXT_JAVASCRIPT_CHARSET_UTF8,
        ODataConstants.APPLICATION_JAVASCRIPT_CHARSET_UTF8 })
public final Response getNavProperty(
        @Context final UriInfo uriInfo,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @QueryParam("$callback") final String callback,
        @QueryParam("$skiptoken") final String skipToken,
        @QueryParam("q") final String q) {
    // アクセス制御
    this.checkReadAccessContext();

    // queryのパース
    UriInfo uriInfo2 = DcCoreUtils.createUriInfo(uriInfo, 2);
    QueryInfo queryInfo = ODataEntitiesResource.queryInfo(uriInfo);

    // NavigationProperty経由の一覧取得を実行する
    BaseResponse response = getOdataProducer().getNavProperty(
            this.sourceEntityId.getEntitySetName(),
            this.sourceEntityId.getEntityKey(),
            this.targetNavProp,
            queryInfo);

    StringWriter sw = new StringWriter();
    // TODO 制限事項でAcceptは無視してJSONで返却するため固定でJSONを指定する.
    List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
    acceptableMediaTypes.add(MediaType.APPLICATION_JSON_TYPE);
    // TODO 制限事項でQueryは無視するため固定でnullを指定する.
    FormatWriter<EntitiesResponse> fw = DcFormatWriterFactory.getFormatWriter(EntitiesResponse.class,
            acceptableMediaTypes, null, callback);

    fw.write(uriInfo2, sw, (EntitiesResponse) response);

    String entity = sw.toString();
    // 制御コードのエスケープ処理
    entity = escapeResponsebody(entity);

    ODataVersion version = ODataVersion.V2;

    return Response.ok(entity, fw.getContentType())
            .header(ODataConstants.Headers.DATA_SERVICE_VERSION, version.asString).build();
}
 
Example 11
Source File: ODataEntitiesResource.java    From io with Apache License 2.0 4 votes vote down vote up
/**
 * @param uriInfo UriInfo
 * @param accept Acceptヘッダ
 * @param format $format パラメタ
 * @param callback コールバック
 * @param skipToken スキップトークン
 * @param q 全文検索パラメタ
 * @return JAX-RS Response
 */
@GET
public Response listEntities(
        @Context UriInfo uriInfo,
        @HeaderParam(HttpHeaders.ACCEPT) final String accept,
        @QueryParam("$format") String format,
        @QueryParam("$callback") final String callback,
        @QueryParam("$skiptoken") final String skipToken,
        @QueryParam("q") final String q) {

    // アクセス制御
    this.odataResource.checkAccessContext(this.accessContext,
            this.odataResource.getNecessaryReadPrivilege(getEntitySetName()));

    // リクエストの取得をProducerに依頼
    EntitiesResponse resp = getEntities(uriInfo, q);
    StringWriter sw = new StringWriter();

    // $formatとAcceptヘッダの値から出力形式を決定
    List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
    MediaType contentType = decideOutputFormat(accept, format);
    acceptableMediaTypes.add(contentType);

    FormatWriter<EntitiesResponse> fw = DcFormatWriterFactory.getFormatWriter(EntitiesResponse.class,
            acceptableMediaTypes, null, callback);
    UriInfo uriInfo2 = DcCoreUtils.createUriInfo(uriInfo, 1);

    fw.write(uriInfo2, sw, resp);
    String entity = null;
    entity = sw.toString();

    // 制御コードのエスケープ処理
    entity = escapeResponsebody(entity);

    // TODO remove this hack, check whether we are Version 2.0 compatible anyway
    ODataVersion version = null;
    version = ODataVersion.V2;

    return Response.ok(entity, fw.getContentType())
            .header(ODataConstants.Headers.DATA_SERVICE_VERSION, version.asString).build();
}