Search in sources :

Example 1 with EntityProjectionMaker

use of com.yahoo.elide.jsonapi.EntityProjectionMaker in project elide by yahoo.

the class Elide method get.

/**
 * Handle GET.
 *
 * @param baseUrlEndPoint base URL with prefix endpoint
 * @param path the path
 * @param queryParams the query params
 * @param requestHeaders the request headers
 * @param opaqueUser the opaque user
 * @param apiVersion the API version
 * @param requestId the request ID
 * @return Elide response object
 */
public ElideResponse get(String baseUrlEndPoint, String path, MultivaluedMap<String, String> queryParams, Map<String, List<String>> requestHeaders, User opaqueUser, String apiVersion, UUID requestId) {
    if (elideSettings.isStrictQueryParams()) {
        try {
            verifyQueryParams(queryParams);
        } catch (BadRequestException e) {
            return buildErrorResponse(e, false);
        }
    }
    return handleRequest(true, opaqueUser, dataStore::beginReadTransaction, requestId, (tx, user) -> {
        JsonApiDocument jsonApiDoc = new JsonApiDocument();
        RequestScope requestScope = new RequestScope(baseUrlEndPoint, path, apiVersion, jsonApiDoc, tx, user, queryParams, requestHeaders, requestId, elideSettings);
        requestScope.setEntityProjection(new EntityProjectionMaker(elideSettings.getDictionary(), requestScope).parsePath(path));
        BaseVisitor visitor = new GetVisitor(requestScope);
        return visit(path, requestScope, visitor);
    });
}
Also used : JsonApiDocument(com.yahoo.elide.jsonapi.models.JsonApiDocument) BaseVisitor(com.yahoo.elide.jsonapi.parser.BaseVisitor) BadRequestException(com.yahoo.elide.core.exceptions.BadRequestException) GetVisitor(com.yahoo.elide.jsonapi.parser.GetVisitor) EntityProjectionMaker(com.yahoo.elide.jsonapi.EntityProjectionMaker) PatchRequestScope(com.yahoo.elide.jsonapi.extensions.PatchRequestScope) RequestScope(com.yahoo.elide.core.RequestScope)

Example 2 with EntityProjectionMaker

use of com.yahoo.elide.jsonapi.EntityProjectionMaker in project elide by yahoo.

the class Elide method patch.

/**
 * Handle PATCH.
 *
 * @param baseUrlEndPoint base URL with prefix endpoint
 * @param contentType the content type
 * @param accept the accept
 * @param path the path
 * @param jsonApiDocument the json api document
 * @param queryParams the query params
 * @param requestHeaders the request headers
 * @param opaqueUser the opaque user
 * @param apiVersion the API version
 * @param requestId the request ID
 * @return Elide response object
 */
public ElideResponse patch(String baseUrlEndPoint, String contentType, String accept, String path, String jsonApiDocument, MultivaluedMap<String, String> queryParams, Map<String, List<String>> requestHeaders, User opaqueUser, String apiVersion, UUID requestId) {
    Handler<DataStoreTransaction, User, HandlerResult> handler;
    if (JsonApiPatch.isPatchExtension(contentType) && JsonApiPatch.isPatchExtension(accept)) {
        handler = (tx, user) -> {
            PatchRequestScope requestScope = new PatchRequestScope(baseUrlEndPoint, path, apiVersion, tx, user, requestId, queryParams, requestHeaders, elideSettings);
            try {
                Supplier<Pair<Integer, JsonNode>> responder = JsonApiPatch.processJsonPatch(dataStore, path, jsonApiDocument, requestScope);
                return new HandlerResult(requestScope, responder);
            } catch (RuntimeException e) {
                return new HandlerResult(requestScope, e);
            }
        };
    } else {
        handler = (tx, user) -> {
            JsonApiDocument jsonApiDoc = mapper.readJsonApiDocument(jsonApiDocument);
            RequestScope requestScope = new RequestScope(baseUrlEndPoint, path, apiVersion, jsonApiDoc, tx, user, queryParams, requestHeaders, requestId, elideSettings);
            requestScope.setEntityProjection(new EntityProjectionMaker(elideSettings.getDictionary(), requestScope).parsePath(path));
            BaseVisitor visitor = new PatchVisitor(requestScope);
            return visit(path, requestScope, visitor);
        };
    }
    return handleRequest(false, opaqueUser, dataStore::beginTransaction, requestId, handler);
}
Also used : PatchRequestScope(com.yahoo.elide.jsonapi.extensions.PatchRequestScope) User(com.yahoo.elide.core.security.User) JsonApiDocument(com.yahoo.elide.jsonapi.models.JsonApiDocument) PatchVisitor(com.yahoo.elide.jsonapi.parser.PatchVisitor) EntityProjectionMaker(com.yahoo.elide.jsonapi.EntityProjectionMaker) PatchRequestScope(com.yahoo.elide.jsonapi.extensions.PatchRequestScope) RequestScope(com.yahoo.elide.core.RequestScope) BaseVisitor(com.yahoo.elide.jsonapi.parser.BaseVisitor) DataStoreTransaction(com.yahoo.elide.core.datastore.DataStoreTransaction) Pair(org.apache.commons.lang3.tuple.Pair)

Example 3 with EntityProjectionMaker

use of com.yahoo.elide.jsonapi.EntityProjectionMaker in project elide by yahoo.

the class Elide method post.

/**
 * Handle POST.
 *
 * @param baseUrlEndPoint base URL with prefix endpoint
 * @param path the path
 * @param jsonApiDocument the json api document
 * @param queryParams the query params
 * @param requestHeaders the request headers
 * @param opaqueUser the opaque user
 * @param apiVersion the API version
 * @param requestId the request ID
 * @return Elide response object
 */
public ElideResponse post(String baseUrlEndPoint, String path, String jsonApiDocument, MultivaluedMap<String, String> queryParams, Map<String, List<String>> requestHeaders, User opaqueUser, String apiVersion, UUID requestId) {
    return handleRequest(false, opaqueUser, dataStore::beginTransaction, requestId, (tx, user) -> {
        JsonApiDocument jsonApiDoc = mapper.readJsonApiDocument(jsonApiDocument);
        RequestScope requestScope = new RequestScope(baseUrlEndPoint, path, apiVersion, jsonApiDoc, tx, user, queryParams, requestHeaders, requestId, elideSettings);
        requestScope.setEntityProjection(new EntityProjectionMaker(elideSettings.getDictionary(), requestScope).parsePath(path));
        BaseVisitor visitor = new PostVisitor(requestScope);
        return visit(path, requestScope, visitor);
    });
}
Also used : JsonApiDocument(com.yahoo.elide.jsonapi.models.JsonApiDocument) BaseVisitor(com.yahoo.elide.jsonapi.parser.BaseVisitor) EntityProjectionMaker(com.yahoo.elide.jsonapi.EntityProjectionMaker) PatchRequestScope(com.yahoo.elide.jsonapi.extensions.PatchRequestScope) RequestScope(com.yahoo.elide.core.RequestScope) PostVisitor(com.yahoo.elide.jsonapi.parser.PostVisitor)

Example 4 with EntityProjectionMaker

use of com.yahoo.elide.jsonapi.EntityProjectionMaker in project elide by yahoo.

the class Elide method delete.

/**
 * Handle DELETE.
 *
 * @param baseUrlEndPoint base URL with prefix endpoint
 * @param path the path
 * @param jsonApiDocument the json api document
 * @param queryParams the query params
 * @param requestHeaders the request headers
 * @param opaqueUser the opaque user
 * @param apiVersion the API version
 * @param requestId the request ID
 * @return Elide response object
 */
public ElideResponse delete(String baseUrlEndPoint, String path, String jsonApiDocument, MultivaluedMap<String, String> queryParams, Map<String, List<String>> requestHeaders, User opaqueUser, String apiVersion, UUID requestId) {
    return handleRequest(false, opaqueUser, dataStore::beginTransaction, requestId, (tx, user) -> {
        JsonApiDocument jsonApiDoc = StringUtils.isEmpty(jsonApiDocument) ? new JsonApiDocument() : mapper.readJsonApiDocument(jsonApiDocument);
        RequestScope requestScope = new RequestScope(baseUrlEndPoint, path, apiVersion, jsonApiDoc, tx, user, queryParams, requestHeaders, requestId, elideSettings);
        requestScope.setEntityProjection(new EntityProjectionMaker(elideSettings.getDictionary(), requestScope).parsePath(path));
        BaseVisitor visitor = new DeleteVisitor(requestScope);
        return visit(path, requestScope, visitor);
    });
}
Also used : JsonApiDocument(com.yahoo.elide.jsonapi.models.JsonApiDocument) BaseVisitor(com.yahoo.elide.jsonapi.parser.BaseVisitor) EntityProjectionMaker(com.yahoo.elide.jsonapi.EntityProjectionMaker) PatchRequestScope(com.yahoo.elide.jsonapi.extensions.PatchRequestScope) RequestScope(com.yahoo.elide.core.RequestScope) DeleteVisitor(com.yahoo.elide.jsonapi.parser.DeleteVisitor)

Example 5 with EntityProjectionMaker

use of com.yahoo.elide.jsonapi.EntityProjectionMaker in project elide by yahoo.

the class JSONAPITableExportOperation method getProjections.

@Override
public Collection<EntityProjection> getProjections(TableExport export, RequestScope scope) {
    EntityProjection projection = null;
    try {
        URIBuilder uri = new URIBuilder(export.getQuery());
        Elide elide = getService().getElide();
        projection = new EntityProjectionMaker(elide.getElideSettings().getDictionary(), scope).parsePath(JSONAPIAsyncQueryOperation.getPath(uri));
    } catch (URISyntaxException e) {
        throw new BadRequestException(e.getMessage());
    }
    return Collections.singletonList(projection);
}
Also used : EntityProjection(com.yahoo.elide.core.request.EntityProjection) BadRequestException(com.yahoo.elide.core.exceptions.BadRequestException) URISyntaxException(java.net.URISyntaxException) Elide(com.yahoo.elide.Elide) EntityProjectionMaker(com.yahoo.elide.jsonapi.EntityProjectionMaker) URIBuilder(org.apache.http.client.utils.URIBuilder)

Aggregations

EntityProjectionMaker (com.yahoo.elide.jsonapi.EntityProjectionMaker)6 RequestScope (com.yahoo.elide.core.RequestScope)4 PatchRequestScope (com.yahoo.elide.jsonapi.extensions.PatchRequestScope)4 JsonApiDocument (com.yahoo.elide.jsonapi.models.JsonApiDocument)4 BaseVisitor (com.yahoo.elide.jsonapi.parser.BaseVisitor)4 BadRequestException (com.yahoo.elide.core.exceptions.BadRequestException)2 EntityProjection (com.yahoo.elide.core.request.EntityProjection)2 Elide (com.yahoo.elide.Elide)1 DataStoreTransaction (com.yahoo.elide.core.datastore.DataStoreTransaction)1 User (com.yahoo.elide.core.security.User)1 DeleteVisitor (com.yahoo.elide.jsonapi.parser.DeleteVisitor)1 GetVisitor (com.yahoo.elide.jsonapi.parser.GetVisitor)1 PatchVisitor (com.yahoo.elide.jsonapi.parser.PatchVisitor)1 PostVisitor (com.yahoo.elide.jsonapi.parser.PostVisitor)1 URISyntaxException (java.net.URISyntaxException)1 Pair (org.apache.commons.lang3.tuple.Pair)1 URIBuilder (org.apache.http.client.utils.URIBuilder)1