/* * Copyright 2011-2017 Amazon Technologies, Inc. * * 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://aws.amazon.com/apache2.0 * * This file 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.amazonaws.eclipse.codestar; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.amazonaws.eclipse.codestar.arn.ARN; import com.amazonaws.eclipse.core.AwsToolkitCore; import com.amazonaws.eclipse.core.regions.RegionUtils; import com.amazonaws.eclipse.core.regions.ServiceAbbreviations; import com.amazonaws.services.codecommit.AWSCodeCommit; import com.amazonaws.services.codecommit.model.GetRepositoryRequest; import com.amazonaws.services.codecommit.model.RepositoryMetadata; import com.amazonaws.services.codestar.AWSCodeStar; import com.amazonaws.services.codestar.model.DescribeProjectRequest; import com.amazonaws.services.codestar.model.DescribeProjectResult; import com.amazonaws.services.codestar.model.ListProjectsRequest; import com.amazonaws.services.codestar.model.ListResourcesRequest; import com.amazonaws.services.codestar.model.ProjectSummary; import com.amazonaws.services.codestar.model.Resource; public class CodeStarUtils { public static Map<String, DescribeProjectResult> getCodeStarProjects(String accountId, String regionId) { Map<String, DescribeProjectResult> projectMap = new HashMap<String, DescribeProjectResult>(); AWSCodeStar client = getCodeStarClient(accountId, regionId); List<ProjectSummary> projectList = client.listProjects(new ListProjectsRequest()).getProjects(); for (ProjectSummary project : projectList) { projectMap.put(project.getProjectId(), client.describeProject(new DescribeProjectRequest().withId(project.getProjectId()))); } return projectMap; } /* * Get the AWS CodeCommit repositories associated with the given AWS CodeStar project. */ public static List<RepositoryMetadata> getCodeCommitRepositories(String accountId, String regionId, String codestarProjectId) { AWSCodeStar codeStarClient = getCodeStarClient(accountId, regionId); AWSCodeCommit codeCommitClient = getCodeCommitClient(accountId, regionId); List<Resource> resources = codeStarClient.listResources(new ListResourcesRequest().withProjectId(codestarProjectId)).getResources(); List<String> codeCommitRepoNames = getCodeCommitRepoNames(resources); List<RepositoryMetadata> repositoryMetadatas = new ArrayList<RepositoryMetadata>(); for (String repoName : codeCommitRepoNames) { repositoryMetadatas.add(codeCommitClient.getRepository(new GetRepositoryRequest() .withRepositoryName(repoName)).getRepositoryMetadata()); } return repositoryMetadatas; } /* * Return a list of AWS CodeCommit repository names from a given list of AWS CodeStar resources * that is associated with one AWS CodeStar project. Return an empty list if no AWS CodeCommit * repository is found. */ private static List<String> getCodeCommitRepoNames(List<Resource> resources) { List<String> repoNames = new ArrayList<String>(); for (Resource resource : resources) { ARN resourceArn = ARN.fromSafeString(resource.getId()); if ("codecommit".equals(resourceArn.getVendor())) { repoNames.add(resourceArn.getRelativeId()); } } return repoNames; } public static AWSCodeStar getCodeStarClient(String accountId, String regionId) { return AwsToolkitCore.getDefault().getClientFactory(accountId).getCodeStarClientByRegion(regionId); } public static AWSCodeCommit getCodeCommitClient(String accountId, String regionId) { String endpoint = RegionUtils.getRegion(regionId).getServiceEndpoint(ServiceAbbreviations.CODECOMMIT); return AwsToolkitCore.getDefault().getClientFactory(accountId).getCodeCommitClientByEndpoint(endpoint); } }