All Downloads are FREE. Search and download functionalities are using the official Maven repository.

core.engine.processor.PatchRequestProcessor Maven / Gradle / Ivy

Go to download

Epikos is a Rest Serivce framework which can be extend to develop any other Rest API/Services. For more detail please checkout github (https://github.com/epikosrest/epikos.git)

There is a newer version: 0.0.7.8.1
Show newest version
package core.engine.processor;

import core.domain.enums.Status;
import core.dynamic.resources.DynamicRequest;
import core.dynamic.resources.IDynamicResourceControllerPATCH;
import core.dynamic.resources.IDynamicResourceControllerPUT;
import core.exception.EpikosException;
import metrics.Metrics;

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by nitina on 2/3/17.
 */
public class PatchRequestProcessor extends RequestProcessor{

    public PatchRequestProcessor(Class controller,
                               Metrics metricsRecorder,
                               ContainerRequestContext containerRequestContext,
                               String mediaTypeToProduce,String status){
        super(controller,metricsRecorder,containerRequestContext,mediaTypeToProduce,status);

    }

    @Override
    public Response process() throws IllegalAccessException, InstantiationException, EpikosException {
        final IDynamicResourceControllerPATCH processor = (IDynamicResourceControllerPATCH) controller.newInstance();
        final MultivaluedMap pathParams = containerRequestContext.getUriInfo().getPathParameters();

        try {

            final DynamicRequest dynamicRequest = new DynamicRequest(containerRequestContext,pathParams);
            metricsRecorder.startTimerContext();

            Integer statusCode = Status.getStatusCode(status);

            List supportedStatus = getSupportedStatusListForPatchMethod();
            verifyStatusIsSupportedForTheMethod(supportedStatus,statusCode);

            Object response = processor.process(dynamicRequest);
            return constructResponse(response,statusCode);

        }catch (Exception exp) {

            return constructErrorResponse(exp,mediaTypeToProduce);

        }finally
        {
            metricsRecorder.stopTimerContext();
        }
    }

    private final List getSupportedStatusListForPatchMethod(){
        List supportedStatusList = new ArrayList<>();
        supportedStatusList.add(Status.OK);
        supportedStatusList.add(Status.NOCONTENT);
        supportedStatusList.add(Status.CREATED);
        return supportedStatusList;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy