private WebAppConfiguration getWebAppConfiguration()

in azure-webapp-maven-plugin/src/main/java/com/microsoft/azure/maven/webapp/ConfigMojo.java [249:294]


    private WebAppConfiguration getWebAppConfiguration(WebAppConfiguration configuration)
            throws MojoFailureException {
        final WebAppConfiguration.WebAppConfigurationBuilder<?, ?> builder = configuration.toBuilder();

        final String defaultSubscriptionId = StringUtils.isNotBlank(configuration.subscriptionId) ? configuration.subscriptionId : null;
        final String subscriptionId = StringUtils.isNotBlank(defaultSubscriptionId) ? queryer.assureInputFromUser("subscriptionId", defaultSubscriptionId,
                SUBSCRIPTION_ID_PATTERN, null, null) : null;

        final String defaultAppName =
                getDefaultValue(configuration.appName, getProject().getArtifactId(), APP_NAME_PATTERN);
        final String appName = queryer.assureInputFromUser("appName", defaultAppName,
                APP_NAME_PATTERN, null, null);

        final String defaultResourceGroup = getDefaultValue(configuration.resourceGroup,
                String.format("%s-rg", appName), RESOURCE_GROUP_PATTERN);
        final String resourceGroup = queryer.assureInputFromUser("resourceGroup",
                defaultResourceGroup,
                RESOURCE_GROUP_PATTERN, null, null);

        final String defaultRegion = configuration.getRegionOrDefault();
        final String region = queryer.assureInputFromUser("region", defaultRegion, NOT_EMPTY_REGEX,
                null, null);

        final boolean isJBoss = isJBossRuntime(WebContainer.fromString(configuration.getWebContainer()));
        final PricingTier defaultPricingTierFromRuntime = isJBoss ?
                WebAppConfiguration.DEFAULT_JBOSS_PRICING_TIER : WebAppConfiguration.DEFAULT_PRICINGTIER;
        final String currentPricingTier = configuration.getPricingTier();
        final List<String> availablePriceList = getAvailablePricingTierList(configuration.getOs(), WebContainer.fromString(configuration.getWebContainer()));
        String defaultPricingTier = currentPricingTier;
        if (availablePriceList.stream().noneMatch(price -> StringUtils.equalsIgnoreCase(price, currentPricingTier))) {
            defaultPricingTier = defaultPricingTierFromRuntime.toString();
            if (StringUtils.isNotBlank(currentPricingTier)) {
                Log.warn(String.format(PRICE_TIER_NOT_AVAIL, currentPricingTier, defaultPricingTier));
            }
        }

        final String pricingTier = queryer.assureInputFromUser("pricingTier", defaultPricingTier,
                availablePriceList, String.format(PRICING_TIER_PROMPT, defaultPricingTier));
        return builder
                .subscriptionId(subscriptionId)
                .appName(appName)
                .resourceGroup(resourceGroup)
                .region(Region.fromName(region))
                .pricingTier(pricingTier)
                .build();
    }