001
002package com.commercetools.history.client;
003
004import java.io.Closeable;
005
006import io.vrap.rmf.base.client.ApiHttpClient;
007import io.vrap.rmf.base.client.SerializerOnlyApiHttpClient;
008
009public class ProjectApiRoot implements Closeable, ProjectScopedApiRoot {
010    private final String projectKey;
011    private final ApiHttpClient apiHttpClient;
012
013    private ProjectApiRoot(final String projectKey, final ApiHttpClient apiHttpClient) {
014        this.projectKey = projectKey;
015        this.apiHttpClient = apiHttpClient;
016    }
017
018    public static ProjectApiRoot of(final String projectKey) {
019        return new ProjectApiRoot(projectKey, SerializerOnlyApiHttpClient.of());
020    }
021
022    public static ProjectApiRoot fromClient(final String projectKey, final ApiHttpClient apiHttpClient) {
023        return new ProjectApiRoot(projectKey, apiHttpClient);
024    }
025
026    @Override
027    public ByProjectKeyRequestBuilder with() {
028        return ApiRoot.fromClient(apiHttpClient).withProjectKeyValue(projectKey);
029    }
030
031    public ByProjectKeyRequestBuilder withProjectKey(final String projectKey) {
032        return ApiRoot.fromClient(apiHttpClient).withProjectKeyValue(projectKey);
033    }
034
035    @Override
036    public ByProjectKeyGet get() {
037        return with().get();
038    }
039
040    @Override
041    public ByProjectKeyByResourceTypeRequestBuilder withResourceTypeValue(String resourceType) {
042        return with().withResourceTypeValue(resourceType);
043    }
044
045    @Override
046    public void close() {
047        if (apiHttpClient == null) {
048            return;
049        }
050        try {
051            apiHttpClient.close();
052        }
053        catch (final Throwable ignored) {
054        }
055    }
056}