class VnfmAdapterServiceProviderImpl implements VnfmAdapterServiceProvider {

    @Override
    public Optional<QueryJobResponse> getInstantiateOperationJobStatus(final String jobId) {
        try {
            final String url = urlProvider.getJobStatusUrl(jobId);

            final ResponseEntity<QueryJobResponse> response =
                    httpServiceProvider.getHttpResponse(url, QueryJobResponse.class);

            final HttpStatus httpStatus = response.getStatusCode();

            if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
                LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: ", url, httpStatus.value());
                return Optional.absent();
            }

            if (!response.hasBody()) {
                LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
                return Optional.absent();
            }
            return Optional.of(response.getBody());
        } catch (final RestProcessingException | InvalidRestRequestException
                | HttpResouceNotFoundException httpInvocationException) {
            LOGGER.error("Unexpected error while processing job request", httpInvocationException);
            throw httpInvocationException;
        }
    }

    @Autowired public  VnfmAdapterServiceProviderImpl(final VnfmAdapterUrlProvider urlProvider,
            final HttpRestServiceProvider httpServiceProvider);

}