/**
*
*/
package org.minnal.generator.core;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.minnal.core.config.ConnectorConfiguration;
import org.minnal.core.config.ConnectorConfiguration.Scheme;
import org.minnal.core.config.ContainerConfiguration;
import org.minnal.core.config.ServerConfiguration;
import org.minnal.utils.serializer.Serializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author ganeshs
*
*/
public class ContainerConfigGenerator extends AbstractGenerator {
private File file;
private ContainerConfiguration configuration;
private Map<String, String> mounts = new HashMap<String, String>();
private static final Logger logger = LoggerFactory.getLogger(ContainerConfigGenerator.class);
/**
* @param resourcesDir
*/
public ContainerConfigGenerator(File baseDir) {
super(baseDir);
addGenerator(new ApplicationSpiGenerator(baseDir));
}
public void addApplication(String applicationClass, String mountPath) {
mounts.put(applicationClass, mountPath);
generatorFor(ApplicationSpiGenerator.class).addApplication(applicationClass);
}
@Override
public void init() {
super.init();
file = new File(getMetaInfFolder(true), "container.yml");
if (! file.exists()) {
configuration = createContainerConfiguration();
} else {
configuration = deserializeFrom(file, Serializer.DEFAULT_YAML_SERIALIZER, ContainerConfiguration.class);
}
}
private ContainerConfiguration createContainerConfiguration() {
ContainerConfiguration configuration = new ContainerConfiguration("My Container");
ServerConfiguration serverConfiguration = new ServerConfiguration();
serverConfiguration.addConnectorConfiguration(new ConnectorConfiguration(8080, Scheme.http, null, 2));
configuration.setServerConfiguration(serverConfiguration);
configuration.setMounts(mounts);
return configuration;
}
@Override
public void generate() {
logger.info("Creating the container config file {}", file.getAbsolutePath());
super.generate();
serializeTo(file, configuration, Serializer.DEFAULT_YAML_SERIALIZER);
}
}