package org.stokesdrift.container;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.stokesdrift.config.ApplicationConfig;
public abstract class BaseApplicationBuilder implements ApplicationBuilder {
private static final Logger logger = Logger.getLogger(BaseApplicationBuilder.class.getName());
private ApplicationConfig config;
public BaseApplicationBuilder() {
}
public BaseApplicationBuilder(ApplicationConfig config) {
this.config = config;
}
@Override
public ApplicationBuilder addConfig(ApplicationConfig config) {
return createBuilder(config);
}
@Override
public Application build() {
Application application = null;
try {
application = getApplicationClass().newInstance();
} catch (InstantiationException | IllegalAccessException e) {
logger.log(Level.SEVERE, "stokesdrift:application_builder[status=failed]", e);
}
if (application != null) {
application.initializeConfig(config);
}
return application;
}
public abstract ApplicationBuilder createBuilder(ApplicationConfig config);
public abstract Class<? extends Application> getApplicationClass();
}