/* * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. 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.lambda.project.metadata; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; /** * Metadata POJO for deploying Serverless project. This POJO records the last deployment information * for the corresponding Serverless project which could be reused for the next time of deployment. */ public class ServerlessProjectMetadata { // Lambda handler package prefix private String packagePrefix; // Region ID for last deployment private String lastDeploymentRegionId; // Configurations for last deployment to a specific region private Map<String, RegionConfig> regionConfig; public String getLastDeploymentRegionId() { return lastDeploymentRegionId; } public void setLastDeploymentRegionId(String lastDeploymentRegionId) { this.lastDeploymentRegionId = lastDeploymentRegionId; } public Map<String, RegionConfig> getRegionConfig() { return regionConfig; } public void setRegionConfig(Map<String, RegionConfig> regionConfig) { this.regionConfig = regionConfig; } public String getPackagePrefix() { return packagePrefix; } public void setPackagePrefix(String packagePrefix) { this.packagePrefix = packagePrefix; } @JsonIgnore public String getLastDeploymentBucket() { RegionConfig regionConfig = getDefaultRegionConfig(); return regionConfig == null ? null : regionConfig.getBucket(); } @JsonIgnore public String getLastDeploymentBucket(String regionId) { RegionConfig regionConfig = getRegionConfig(regionId); return regionConfig == null ? null : regionConfig.getBucket(); } @JsonIgnore public void setLastDeploymentBucket(String bucketName) { RegionConfig regionConfig = getDefaultRegionConfig(); if (regionConfig != null) { regionConfig.setBucket(bucketName); } } @JsonIgnore public String getLastDeploymentStack() { RegionConfig regionConfig = getDefaultRegionConfig(); return regionConfig == null ? null : regionConfig.getStack(); } @JsonIgnore public String getLastDeploymentStack(String regionId) { RegionConfig regionConfig = getRegionConfig(regionId); return regionConfig == null ? null : regionConfig.getStack(); } @JsonIgnore public void setLastDeploymentStack(String stackName) { RegionConfig regionConfig = getDefaultRegionConfig(); if (regionConfig != null) { regionConfig.setStack(stackName); } } /** * Create the path to the last deployment {@link RegionConfig} if it is null and return it. */ @JsonIgnore private RegionConfig getDefaultRegionConfig() { if (regionConfig == null) { regionConfig = new HashMap<>(); } if (lastDeploymentRegionId != null) { RegionConfig defaultRegionConfig = regionConfig.get(lastDeploymentRegionId); if (defaultRegionConfig == null) { defaultRegionConfig = new RegionConfig(); regionConfig.put(lastDeploymentRegionId, defaultRegionConfig); } return defaultRegionConfig; } return null; } @JsonIgnore private RegionConfig getRegionConfig(String regionId) { if (regionConfig == null) { regionConfig = new HashMap<>(); } return regionId == null ? null : regionConfig.get(regionId); } public static class RegionConfig { private String bucket; private String stack; public String getBucket() { return bucket; } public void setBucket(String bucket) { this.bucket = bucket; } public String getStack() { return stack; } public void setStack(String stack) { this.stack = stack; } } }