/* * Copyright 2015 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.elasticbeanstalk.resources; import java.io.IOException; import java.io.InputStream; import com.amazonaws.util.IOUtils; /** * Provides access to resources on the class path. Only handles text files with absolute resource * paths currently. */ public class BeanstalkResourceProvider { private static final String RESOURCES_PATH = "/com/amazonaws/eclipse/elasticbeanstalk/resources"; private static BeanstalkResource SERVICE_ROLE_PERMISSIONS_POLICY = new BeanstalkResource(RESOURCES_PATH + "/service-role-permissions-policy.json"); private static BeanstalkResource SERVICE_ROLE_TRUST_POLICY = new BeanstalkResource(RESOURCES_PATH + "/service-role-trust-policy.json"); private static BeanstalkResource INSTANCE_PROFILE_PERMISSIONS_POLICY = new BeanstalkResource(RESOURCES_PATH + "/instance-profile-permissions-policy.json"); private static BeanstalkResource INSTANCE_PROFILE_TRUST_POLICY = new BeanstalkResource(RESOURCES_PATH + "/instance-profile-trust-policy.json"); private static BeanstalkResource MINIMUM_IAM_PERMISSIONS_POLICY = new BeanstalkResource(RESOURCES_PATH + "/minimum-iam-permissions-policy.json"); public BeanstalkResource getServiceRolePermissionsPolicy() { return SERVICE_ROLE_PERMISSIONS_POLICY; } public BeanstalkResource getServiceRoleTrustPolicy() { return SERVICE_ROLE_TRUST_POLICY; } public BeanstalkResource getInstanceProfilePermissionsPolicy() { return INSTANCE_PROFILE_PERMISSIONS_POLICY; } public BeanstalkResource getInstanceProfileTrustPolicy() { return INSTANCE_PROFILE_TRUST_POLICY; } public BeanstalkResource getMinimumIamPermissionsPolicy() { return MINIMUM_IAM_PERMISSIONS_POLICY; } /** * Represents a resource on the classpath and provides utility methods for accessing it's data */ public static class BeanstalkResource { private final String resourcePath; public BeanstalkResource(String resourcePath) { this.resourcePath = resourcePath; } public String asString() { return getResourceAsString(resourcePath); } public InputStream asStream() { return BeanstalkResourceProvider.class.getResourceAsStream(resourcePath); } private String getResourceAsString(String resourcePath) { return BeanstalkResourceProvider.toString(asStream()); } } private static String toString(InputStream is) { if (is != null) { try { String content = IOUtils.toString(is); IOUtils.closeQuietly(is, null); return content; } catch (IOException e) { IOUtils.closeQuietly(is, null); throw new RuntimeException(e); } } return null; } }