001package co.codewizards.cloudstore.ls.rest.client.request;
002
003import static java.util.Objects.*;
004
005import javax.ws.rs.client.Entity;
006import javax.ws.rs.client.WebTarget;
007
008import co.codewizards.cloudstore.ls.core.invoke.MethodInvocationRequest;
009import co.codewizards.cloudstore.ls.core.invoke.MethodInvocationResponse;
010import co.codewizards.cloudstore.ls.core.provider.MediaTypeConst;
011
012public class InvokeMethod extends AbstractRequest<MethodInvocationResponse> {
013
014        private final MethodInvocationRequest methodInvocationRequest;
015
016        public InvokeMethod(MethodInvocationRequest methodInvocationRequest) {
017                this.methodInvocationRequest = requireNonNull(methodInvocationRequest, "methodInvocationRequest");
018        }
019
020        @Override
021        public MethodInvocationResponse execute() {
022                final WebTarget webTarget = createWebTarget("InvokeMethod");
023                final MethodInvocationResponse repoInfoResponseDto = assignCredentials(webTarget.request(MediaTypeConst.APPLICATION_JAVA_NATIVE_WITH_OBJECT_REF_TYPE))
024                                .post(Entity.entity(methodInvocationRequest, MediaTypeConst.APPLICATION_JAVA_NATIVE_WITH_OBJECT_REF_TYPE), MethodInvocationResponse.class);
025                return repoInfoResponseDto;
026        }
027
028        @Override
029        public boolean isResultNullable() {
030                return false;
031        }
032}