/*******************************************************************************
* Copyright (c) 2013, 2015 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* gonural - initial implementation
* 2014-09-01-2.6.0 Dmitry Kornilov
* - Added buildSingleResultQueryResponse method.
******************************************************************************/
package org.eclipse.persistence.jpa.rs.features;
import org.eclipse.persistence.internal.queries.ReportItem;
import org.eclipse.persistence.jpa.rs.PersistenceContext;
import javax.ws.rs.core.UriInfo;
import java.util.List;
import java.util.Map;
/**
* Common interface for all response builders.
*
* @author gonural
*/
public interface FeatureResponseBuilder {
/**
* Builds the read all query response.
*
* @param context the context
* @param queryParams the query params
* @param items the items
* @param uriInfo the uri info
* @return the object
*/
Object buildReadAllQueryResponse(PersistenceContext context, Map<String, Object> queryParams, List<Object> items, UriInfo uriInfo);
/**
* Builds the report query response.
*
* @param context the context
* @param queryParams the query params
* @param results the results
* @param items the items
* @param uriInfo the uri info
* @return the object
*/
Object buildReportQueryResponse(PersistenceContext context, Map<String, Object> queryParams, List<Object[]> results, List<ReportItem> items, UriInfo uriInfo);
/**
* Builds the single entity response.
*
* @param context the context
* @param queryParams the query params
* @param result the result
* @param uriInfo the uri info
* @return the object
*/
Object buildSingleEntityResponse(PersistenceContext context, Map<String, Object> queryParams, Object result, UriInfo uriInfo);
/**
* Builds the attribute response.
*
* @param context the context
* @param queryParams the query params
* @param attribute the attribute
* @param results the results
* @param uriInfo the uri info
* @return the object
*/
Object buildAttributeResponse(PersistenceContext context, Map<String, Object> queryParams, String attribute, Object results, UriInfo uriInfo);
/**
* Builds the single result query response.
*
* @param context the context
* @param queryParams the query params
* @param result the result
* @param items the report items (result of ReportQuery)
* @param uriInfo the uri info
* @return the response
*/
Object buildSingleResultQueryResponse(PersistenceContext context, Map<String, Object> queryParams, Object result, List<ReportItem> items, UriInfo uriInfo);
}