class StorageClientRest extends DefaultClient implements StorageClient {

    @Override
    public StoredInfoResult storeFileFromWorkspace(String strategyId, DataCategory type, String guid,
        ObjectDescription description)
        throws StorageAlreadyExistsClientException, StorageNotFoundClientException, StorageServerClientException {
        Integer tenantId = ParameterHelper.getTenantParameter();
        ParametersChecker.checkParameter(TYPE_OF_STORAGE_OBJECT_MUST_HAVE_A_VALID_VALUE, type);
        ParametersChecker.checkParameter(GUID_MUST_HAVE_A_VALID_VALUE, guid);
        ParametersChecker.checkParameter(OBJECT_DESCRIPTION_MUST_HAVE_A_VALID_VALUE, description);
        if (description != null) {
            ParametersChecker.checkParameter(OBJECT_DESCRIPTION_GUID_MUST_HAVE_A_VALID_VALUE,
                description.getWorkspaceContainerGUID());
            ParametersChecker.checkParameter(OBJECT_DESCRIPTION_URI_MUST_HAVE_A_VALID_VALUE,
                description.getWorkspaceObjectURI());
        }
        VitamRequestBuilder request = post()
            .withPath("/" + type.getCollectionName() + "/" + guid)
            .withHeader(GlobalDataRest.X_TENANT_ID, tenantId)
            .withHeader(GlobalDataRest.X_STRATEGY_ID, strategyId)
            .withBody(description)
            .withJson();
        try (Response response = make(request)) {
            return handleCommonResponseStatus(response).readEntity(StoredInfoResult.class);
        } catch (final VitamClientInternalException e) {
            final String errorMessage =
                VitamCodeHelper.getMessageFromVitamCode(VitamCode.STORAGE_TECHNICAL_INTERNAL_ERROR);
            LOGGER.error(errorMessage, e);
            throw new StorageServerClientException(errorMessage, e);
        }
    }

      StorageClientRest(StorageClientFactory factory);

}