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

com.urswolfer.gerrit.client.rest.http.groups.GroupApiRestClient Maven / Gradle / Ivy

There is a newer version: 0.9.7
Show newest version
/*
 * Copyright 2013-2016 Urs Wolfer
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.urswolfer.gerrit.client.rest.http.groups;

import com.google.gerrit.extensions.api.groups.GroupApi;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.common.GroupInfo;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gson.JsonElement;
import com.urswolfer.gerrit.client.rest.http.GerritRestClient;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * @author Shawn Stafford
 */
public class GroupApiRestClient extends GroupApi.NotImplemented implements GroupApi {

    /** Base REST URL for managing Group data */
    private static final String BASE_URL = "/groups";

    private final GroupsParser groupsParser;
    private final GerritRestClient gerritRestClient;
    private final String groupId;

    public GroupApiRestClient(
        GerritRestClient gerritRestClient,
        GroupsParser groupsParser,
        String id)
    {
        this.gerritRestClient = gerritRestClient;
        this.groupsParser = groupsParser;
        this.groupId = id;
    }

    public static String getBaseRequestPath() {
        return BASE_URL;
    }

    public static String getRequestPath(String id) {
        return BASE_URL + "/" + id;
    }

    protected String getRequestPath() {
        return getRequestPath(groupId);
    }

    @Override
    public GroupInfo get() throws RestApiException {
        String restPath = getRequestPath();
        JsonElement result = gerritRestClient.getRequest(restPath);
        return groupsParser.parseGroupInfo(result);
    }

    @Override
    public GroupInfo detail() throws RestApiException {
        String restPath = getRequestPath() + "/detail";
        JsonElement result = gerritRestClient.getRequest(restPath);
        return groupsParser.parseGroupInfo(result);
    }

    @Override
    public String name() throws RestApiException {
        String restPath = getRequestPath() + "/name";
        return gerritRestClient.getRequest(restPath).getAsString();
    }

    @Override
    public void name(String name) throws RestApiException {
        String restPath = getRequestPath() + "/name";
        gerritRestClient.putRequest(restPath, name);
    }

    @Override
    public GroupInfo owner() throws RestApiException {
        String restPath = getRequestPath() + "/owner";
        JsonElement result = gerritRestClient.getRequest(restPath);
        return groupsParser.parseGroupInfo(result);
    }

    @Override
    public void owner(String owner) throws RestApiException {
        String restPath = getRequestPath() + "/owner";
        gerritRestClient.putRequest(restPath, owner);
    }

    @Override
    public String description() throws RestApiException {
        String restPath = getRequestPath() + "/description";
        return gerritRestClient.getRequest(restPath).getAsString();
    }

    @Override
    public void description(String description) throws RestApiException {
        String restPath = getRequestPath() + "/description";
        gerritRestClient.putRequest(restPath, description);
    }

    @Override
    public List members() throws RestApiException {
        return members(false);
    }

    @Override
    public List members(boolean recursive) throws RestApiException {
        String restPath = getRequestPath() + "/members";
        if (recursive) {
            restPath += "?recursive";
        }
        JsonElement result = gerritRestClient.getRequest(restPath);
        return groupsParser.parseGroupMembers(result);
    }

    @Override
    public void addMembers(String... members) throws RestApiException {
        String restPath = getRequestPath() + "/members";

        // Create an object which can be used to create the json for:
        // { members: [ "member1", "member2" ] }
        Map> memberMap =
            Collections.singletonMap("members", Arrays.asList(members));
        String json = gerritRestClient.getGson().toJson(memberMap);
        gerritRestClient.postRequest(restPath, json);
    }

    @Override
    public List includedGroups() throws RestApiException {
        String restPath = getRequestPath() + "/groups/";
        JsonElement result = gerritRestClient.getRequest(restPath);
        return groupsParser.parseGroupInfos(result);
    }

    @Override
    public void addGroups(String... groups) throws RestApiException {
        String restPath = getRequestPath() + "/groups";

        // Create an object which can be used to create the json for:
        // { groups: [ "group1", "group2 ] }
        Map> groupMap =
            Collections.singletonMap("groups", Arrays.asList(groups));
        String json = gerritRestClient.getGson().toJson(groupMap);

        gerritRestClient.postRequest(restPath, json);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy