| /******************************************************************************* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| ******************************************************************************/ |
| package org.apache.olingo.odata2.jpa.processor.api; |
| |
| import java.util.List; |
| |
| import org.apache.olingo.odata2.api.exception.ODataNotFoundException; |
| import org.apache.olingo.odata2.api.processor.ODataResponse; |
| import org.apache.olingo.odata2.api.uri.info.DeleteUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.GetEntityLinkUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.GetEntitySetLinksUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.GetFunctionImportUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.PostUriInfo; |
| import org.apache.olingo.odata2.api.uri.info.PutMergePatchUriInfo; |
| import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException; |
| |
| /** |
| * The interface provides methods for building an OData response from a JPA Entity. |
| * Implement this interface for building an OData response from a JPA Entity. |
| */ |
| public interface ODataJPAResponseBuilder { |
| |
| /** |
| * The method builds an OData response for an OData Query Request from a queried list of JPA Entities. |
| * @param queryUriInfo is an information about the request URI |
| * @param jpaEntities is an empty or non empty list of queried instances of JPA Entities |
| * @param contentType of the response |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| */ |
| public ODataResponse build(final GetEntitySetUriInfo queryUriInfo, final List<Object> jpaEntities, |
| final String contentType) throws ODataJPARuntimeException; |
| |
| /** |
| * The method builds an OData response for an OData Read Request from a read JPA Entity |
| * @param readUriInfo is an information about the request URI |
| * @param jpaEntity is a null or non null instances of read JPA Entity |
| * @param contentType of the response |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| * @throws ODataNotFoundException |
| */ |
| public ODataResponse build(final GetEntityUriInfo readUriInfo, final Object jpaEntity, |
| final String contentType) throws ODataJPARuntimeException, |
| ODataNotFoundException; |
| |
| /** |
| * The method builds an OData response for an OData Create Request from a created JPA entity. |
| * @param postUriInfo is an information about the request URI |
| * @param createdObject is a null or non null instances of JPA Entity |
| * @param contentType of the response |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| * @throws ODataNotFoundException |
| */ |
| public ODataResponse build(final PostUriInfo postUriInfo, final Object createdObject, |
| final String contentType) throws ODataJPARuntimeException, |
| ODataNotFoundException; |
| |
| /** |
| * The method builds an OData response for an OData Update Request from an updated JPA Entity |
| * @param putUriInfo is an information about the request URI |
| * @param updatedObject is an updated instance of JPA Entity |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| * @throws ODataNotFoundException |
| */ |
| public ODataResponse build(final PutMergePatchUriInfo putUriInfo, final Object updatedObject) |
| throws ODataJPARuntimeException, ODataNotFoundException; |
| |
| /** |
| * The method builds an OData response for an OData Delete Request from a deleted JPA Entity |
| * @param deleteUriInfo is an information about the request URI |
| * @param deletedObject is an null or non null instance of deleted JPA Entity. Null implies Entity not found. |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| * @throws ODataNotFoundException |
| */ |
| public ODataResponse build(final DeleteUriInfo deleteUriInfo, final Object deletedObject) |
| throws ODataJPARuntimeException, ODataNotFoundException; |
| |
| /** |
| * The method builds an OData response for an OData function Import Request from a registered processor method's |
| * return parameter. |
| * @param functionImportUriInfo is an information about the request URI |
| * @param result is a method's return parameter |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| */ |
| public ODataResponse build(final GetFunctionImportUriInfo functionImportUriInfo, final Object result) |
| throws ODataJPARuntimeException; |
| |
| /** |
| * The method builds an OData response for an OData function Import Request from a registered processor method's |
| * return parameter. The return parameter is a collection of objects. |
| * @param functionImportUriInfo is an information about the request URI |
| * @param result is a method's return parameter is a collection of objects. |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| */ |
| public ODataResponse build(final GetFunctionImportUriInfo functionImportUriInfo, final List<Object> resultList, |
| final String contentType) |
| throws ODataJPARuntimeException, ODataNotFoundException; |
| |
| /** |
| * The method builds an OData response for an OData Read Link Request from a read JPA Entity and its related JPA |
| * Entities. |
| * @param readLinkUriInfo is an information about the request URI |
| * @param jpaEntity is a null or non null read JPA Entity and its related JPA Entities. |
| * @param contentType of the response |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataNotFoundException |
| * @throws ODataJPARuntimeException |
| */ |
| public ODataResponse build(final GetEntityLinkUriInfo readLinkUriInfo, final Object jpaEntity, |
| final String contentType) throws ODataNotFoundException, |
| ODataJPARuntimeException; |
| |
| /** |
| * The method builds an OData response for an OData Query Link Request from a queried JPA Entity and its related JPA |
| * Entities. |
| * @param queryLinkUriInfo is an information about the request URI |
| * @param jpaEntity is an empty or non empty list of queried JPA Entities |
| * @param contentType of the response |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| */ |
| public ODataResponse build(final GetEntitySetLinksUriInfo queryLinkUriInfo, final List<Object> jpaEntity, |
| final String contentType) throws ODataJPARuntimeException; |
| |
| /** |
| * The method builds an OData response from a count representing total number of JPA Entities |
| * @param jpaEntityCount is the count value |
| * @return an instance of type {@link org.apache.olingo.odata2.api.processor.ODataResponse} |
| * @throws ODataJPARuntimeException |
| */ |
| public ODataResponse build(final long jpaEntityCount) |
| throws ODataJPARuntimeException; |
| |
| } |