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

org.craftercms.profile.services.impl.TenantServiceRestClient Maven / Gradle / Ivy

There is a newer version: 4.3.1
Show newest version
/*
 * Copyright (C) 2007-2014 Crafter Software Corporation.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package org.craftercms.profile.services.impl;

import java.util.Collection;
import java.util.List;

import org.craftercms.commons.rest.RestClientUtils;
import org.craftercms.profile.api.AttributeDefinition;
import org.craftercms.profile.api.Tenant;
import org.craftercms.profile.api.exceptions.ProfileException;
import org.craftercms.profile.api.services.TenantService;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.util.MultiValueMap;

import static org.craftercms.profile.api.ProfileConstants.BASE_URL_TENANT;
import static org.craftercms.profile.api.ProfileConstants.PARAM_ATTRIBUTE_NAME;
import static org.craftercms.profile.api.ProfileConstants.PARAM_ROLE;
import static org.craftercms.profile.api.ProfileConstants.PARAM_VERIFY;
import static org.craftercms.profile.api.ProfileConstants.URL_PROFILE_REMOVE_ROLES;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_ADD_ATTRIBUTE_DEFINITIONS;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_ADD_ROLES;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_COUNT;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_CREATE;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_DELETE;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_GET;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_GET_ALL;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_REMOVE_ATTRIBUTE_DEFINITIONS;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_UPDATE;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_UPDATE_ATTRIBUTE_DEFINITIONS;
import static org.craftercms.profile.api.ProfileConstants.URL_TENANT_VERIFY_NEW_PROFILES;

/**
 * REST client implementation of {@link org.craftercms.profile.api.services.TenantService}.
 *
 * @author avasquez
 */
public class TenantServiceRestClient extends AbstractProfileRestClientBase implements TenantService {

    public static final ParameterizedTypeReference> tenantListTypeRef =
            new ParameterizedTypeReference>() {};

    @Override
    public Tenant createTenant(Tenant tenant) throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_CREATE);

        return doPostForObject(url, tenant, Tenant.class);
    }

    @Override
    public Tenant getTenant(String name) throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_GET);

        return doGetForObject(url, Tenant.class, name);
    }

    @Override
    public Tenant updateTenant(Tenant tenant) throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_UPDATE);

        return doPostForObject(url, tenant, Tenant.class);
    }

    @Override
    public void deleteTenant(String name) throws ProfileException {
        String url = getAbsoluteUrl(BASE_URL_TENANT + URL_TENANT_DELETE);

        doPostForLocation(url, createBaseParams(), name);
    }

    @Override
    public long getTenantCount() throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_COUNT);

        return doGetForObject(url, Long.class);
    }

    @Override
    public List getAllTenants() throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_GET_ALL);

        return doGetForObject(url, tenantListTypeRef);
    }

    @Override
    public Tenant verifyNewProfiles(String tenantName, boolean verify) throws ProfileException {
        MultiValueMap params = createBaseParams();
        RestClientUtils.addValue(PARAM_VERIFY, verify, params);

        String url = getAbsoluteUrl(BASE_URL_TENANT + URL_TENANT_VERIFY_NEW_PROFILES);

        return doPostForObject(url, params, Tenant.class, tenantName);
    }

    @Override
    public Tenant addRoles(String tenantName, Collection roles) throws ProfileException {
        MultiValueMap params = createBaseParams();
        RestClientUtils.addValues(PARAM_ROLE, roles, params);

        String url = getAbsoluteUrl(BASE_URL_TENANT + URL_TENANT_ADD_ROLES);

        return doPostForObject(url, params, Tenant.class, tenantName);
    }

    @Override
    public Tenant removeRoles(String tenantName, Collection roles) throws ProfileException {
        MultiValueMap params = createBaseParams();
        RestClientUtils.addValues(PARAM_ROLE, roles, params);

        String url = getAbsoluteUrl(BASE_URL_TENANT + URL_PROFILE_REMOVE_ROLES);

        return doPostForObject(url, params, Tenant.class, tenantName);
    }

    @Override
    public Tenant addAttributeDefinitions(String tenantName, Collection attributeDefinitions)
            throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_ADD_ATTRIBUTE_DEFINITIONS);

        return doPostForObject(url, attributeDefinitions, Tenant.class, tenantName);
    }

    @Override
    public Tenant updateAttributeDefinitions(String tenantName, Collection attributeDefinitions)
            throws ProfileException {
        String url = getAbsoluteUrlWithAccessTokenIdParam(BASE_URL_TENANT + URL_TENANT_UPDATE_ATTRIBUTE_DEFINITIONS);

        return doPostForObject(url, attributeDefinitions, Tenant.class, tenantName);
    }

    @Override
    public Tenant removeAttributeDefinitions(String tenantName, Collection attributeNames)
            throws ProfileException {
        MultiValueMap params = createBaseParams();
        RestClientUtils.addValues(PARAM_ATTRIBUTE_NAME, attributeNames, params);

        String url = getAbsoluteUrl(BASE_URL_TENANT + URL_TENANT_REMOVE_ATTRIBUTE_DEFINITIONS);

        return doPostForObject(url, params, Tenant.class, tenantName);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy