/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.config.spring.dsl.processor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* Represents the application configuration files that describe the integrations. It does not include resource files or
* application descriptors.
*
* An application configuration is defined by an application name and a set of configuration files containing the integration
* required components.
*
* @since 4.0
*/
public class ArtifactConfig {
private String artifactName;
private List<ConfigFile> configFiles = new ArrayList<>();
private Map<String, String> applicationProperties;
private ArtifactConfig() {}
public String getArtifactName() {
return artifactName;
}
public List<ConfigFile> getConfigFiles() {
return Collections.unmodifiableList(configFiles);
}
/**
* @return properties associated to the configuration.
*/
public Map<String, String> getApplicationProperties() {
return applicationProperties;
}
/**
* Builder for {@link ArtifactConfig} instances.
*/
public static class Builder {
private ArtifactConfig applicationConfig = new ArtifactConfig();
/**
* @param applicationName the artifact name
* @return the builder
*/
public Builder setApplicationName(String applicationName) {
this.applicationConfig.artifactName = applicationName;
return this;
}
/**
* @param configFile a {@code ConfigFile} to be added to the application.
* @return the builder
*/
public Builder addConfigFile(ConfigFile configFile) {
this.applicationConfig.configFiles.add(configFile);
return this;
}
/**
* @param applicationProperties properties associated to the configuration.
* @return the builder
*/
public Builder setApplicationProperties(Map<String, String> applicationProperties) {
this.applicationConfig.applicationProperties = applicationProperties;
return this;
}
public ArtifactConfig build() {
return this.applicationConfig;
}
}
}